[Scummvm-cvs-logs] scummvm master -> 1396052dc9ee95618c7d57f9230803bccb2f99d9

somaen einarjohants at gmail.com
Wed Jul 31 04:27:52 CEST 2013


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e296ac1d47 WINTERMUTE: Let engine know both gameid and language of target as well as targetname.
f691e005f8 WINTERMUTE: Add detection for both english and spanish James Peris Demo.
1396052dc9 WINTERMUTE: Add hack to allow language-selection in James Peris demo.


Commit: e296ac1d47e3d53e86773fb2876d48b3db2935b4
    https://github.com/scummvm/scummvm/commit/e296ac1d47e3d53e86773fb2876d48b3db2935b4
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-07-30T19:26:28-07:00

Commit Message:
WINTERMUTE: Let engine know both gameid and language of target as well as targetname.

Changed paths:
    engines/wintermute/base/base_engine.cpp
    engines/wintermute/base/base_engine.h
    engines/wintermute/base/base_file_manager.cpp
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h
    engines/wintermute/base/base_persistence_manager.cpp
    engines/wintermute/wintermute.cpp



diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp
index d4b17a0..79b16e5 100644
--- a/engines/wintermute/base/base_engine.cpp
+++ b/engines/wintermute/base/base_engine.cpp
@@ -46,8 +46,8 @@ BaseEngine::BaseEngine() {
 	_gameId = "";
 }
 
-void BaseEngine::init(Common::Language lang) {
-	_fileManager = new BaseFileManager(lang);
+void BaseEngine::init() {
+	_fileManager = new BaseFileManager(_language);
 	// Don't forget to register your random source
 	_rnd = new Common::RandomSource("Wintermute");
 	_classReg = new SystemClassRegistry();
@@ -60,9 +60,11 @@ BaseEngine::~BaseEngine() {
 	delete _classReg;
 }
 
-void BaseEngine::createInstance(const Common::String &gameid, Common::Language lang) {
-	instance()._gameId = gameid;
-	instance().init(lang);
+void BaseEngine::createInstance(const Common::String &targetName, const Common::String &gameId, Common::Language lang) {
+	instance()._targetName = targetName;
+	instance()._gameId = gameId;
+	instance()._language = lang;
+	instance().init();
 }
 
 void BaseEngine::LOG(bool res, const char *fmt, ...) {
diff --git a/engines/wintermute/base/base_engine.h b/engines/wintermute/base/base_engine.h
index d972e6e..1b3b976 100644
--- a/engines/wintermute/base/base_engine.h
+++ b/engines/wintermute/base/base_engine.h
@@ -44,17 +44,19 @@ class BaseRenderer;
 class SystemClassRegistry;
 class Timer;
 class BaseEngine : public Common::Singleton<Wintermute::BaseEngine> {
-	void init(Common::Language lang);
+	void init();
 	BaseFileManager *_fileManager;
 	Common::String _gameId;
+	Common::String _targetName;
 	BaseGame *_gameRef;
 	// We need random numbers
 	Common::RandomSource *_rnd;
 	SystemClassRegistry *_classReg;
+	Common::Language _language;
 public:
 	BaseEngine();
 	~BaseEngine();
-	static void createInstance(const Common::String &gameid, Common::Language lang);
+	static void createInstance(const Common::String &targetName, const Common::String &gameId, Common::Language lang);
 	void setGameRef(BaseGame *gameRef) { _gameRef = gameRef; }
 
 	Common::RandomSource *getRandomSource() { return _rnd; }
@@ -68,7 +70,9 @@ public:
 	static const Timer *getTimer();
 	static const Timer *getLiveTimer();
 	static void LOG(bool res, const char *fmt, ...);
-	const char *getGameId() { return _gameId.c_str(); }
+	const char *getGameTargetName() const { return _targetName.c_str(); }
+	Common::String getGameId() const { return _gameId; }
+	Common::Language getLanguage() const { return _language; }
 };
 
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/base_file_manager.cpp b/engines/wintermute/base/base_file_manager.cpp
index 7d59b03..64bdbd1 100644
--- a/engines/wintermute/base/base_file_manager.cpp
+++ b/engines/wintermute/base/base_file_manager.cpp
@@ -269,7 +269,7 @@ Common::SeekableReadStream *BaseFileManager::openPkgFile(const Common::String &f
 
 bool BaseFileManager::hasFile(const Common::String &filename) {
 	if (scumm_strnicmp(filename.c_str(), "savegame:", 9) == 0) {
-		BasePersistenceManager pm(BaseEngine::instance().getGameId());
+		BasePersistenceManager pm(BaseEngine::instance().getGameTargetName());
 		if (filename.size() <= 9) {
 			return false;
 		}
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 0594699..d2cf7d1 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -81,7 +81,7 @@ IMPLEMENT_PERSISTENT(BaseGame, true)
 
 
 //////////////////////////////////////////////////////////////////////
-BaseGame::BaseGame(const Common::String &gameId) : BaseObject(this), _gameId(gameId), _timerNormal(), _timerLive() {
+BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _targetName(targetName), _timerNormal(), _timerLive() {
 	_shuttingDown = false;
 
 	_state = GAME_RUNNING;
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index b821805..1943024 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -150,7 +150,7 @@ public:
 	BaseScriptable *_mathClass;
 	BaseSurfaceStorage *_surfaceStorage;
 	BaseFontStorage *_fontStorage;
-	BaseGame(const Common::String &gameId);
+	BaseGame(const Common::String &targetName);
 	virtual ~BaseGame();
 
 	bool _debugDebugMode;
@@ -173,8 +173,8 @@ public:
 	// compatibility bits
 	bool _compatKillMethodThreads;
 
-	const char* getGameId() const { return _gameId.c_str(); }
-	void setGameId(const Common::String& gameId) { _gameId = gameId; }
+	const char* getGameTargetName() const { return _targetName.c_str(); }
+	void setGameTargetName(const Common::String& targetName) { _targetName = targetName; }
 	uint32 _surfaceGCCycleTime;
 	bool _smartCache; // RO
 	bool _subtitles; // RO
@@ -295,7 +295,7 @@ private:
 	uint32 _lastTime;
 	uint32 _fpsTime;
 	uint32 _framesRendered;
-	Common::String _gameId;
+	Common::String _targetName;
 
 	void setEngineLogCallback(ENGINE_LOG_CALLBACK callback = nullptr, void *data = nullptr);
 	ENGINE_LOG_CALLBACK _engineLogCallback;
diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index c46bb72..23290e1 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -94,7 +94,7 @@ BasePersistenceManager::BasePersistenceManager(const char *savePrefix, bool dele
 	if (savePrefix) {
 		_savePrefix = savePrefix;
 	} else if (_gameRef) {
-		_savePrefix = _gameRef->getGameId();
+		_savePrefix = _gameRef->getGameTargetName();
 	} else {
 		_savePrefix = "wmesav";
 	}
diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp
index 202b261..a878944 100644
--- a/engines/wintermute/wintermute.cpp
+++ b/engines/wintermute/wintermute.cpp
@@ -133,7 +133,7 @@ Common::Error WintermuteEngine::run() {
 }
 
 int WintermuteEngine::init() {
-	BaseEngine::createInstance(_targetName, _gameDescription->language);
+	BaseEngine::createInstance(_targetName, _gameDescription->gameid, _gameDescription->language);
 	_game = new AdGame(_targetName);
 	if (!_game) {
 		return 1;
@@ -147,7 +147,7 @@ int WintermuteEngine::init() {
 	_game->initialize1();
 
 	// set gameId, for savegame-naming:
-	_game->setGameId(_targetName);
+	_game->setGameTargetName(_targetName);
 
 	if (DID_FAIL(_game->loadSettings("startup.settings"))) {
 		_game->LOG(0, "Error loading game settings.");


Commit: f691e005f835fbb9266e5d240296f05cf6ef83d6
    https://github.com/scummvm/scummvm/commit/f691e005f835fbb9266e5d240296f05cf6ef83d6
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-07-30T19:26:28-07:00

Commit Message:
WINTERMUTE: Add detection for both english and spanish James Peris Demo.

Changed paths:
    engines/wintermute/detection_tables.h



diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index 7df061c..1dff362 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -294,12 +294,23 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO0()
 	},
-	// James Peris: No License Nor Control
+	// James Peris: No License Nor Control (English)
 	{
 		"jamesperis",
 		"Demo",
 		AD_ENTRY1s("data.dcp", "edb9f9c7a08993c1e28f4e477b5f9830", 116113507),
-		Common::UNK_LANG, // No solution in place to select language
+		Common::EN_ANY,
+		Common::kPlatformWindows,
+		ADGF_UNSTABLE |
+		ADGF_DEMO,
+		GUIO0()
+	},
+	// James Peris: No License Nor Control (Spanish)
+	{
+		"jamesperis",
+		"Demo",
+		AD_ENTRY1s("data.dcp", "edb9f9c7a08993c1e28f4e477b5f9830", 116113507),
+		Common::ES_ESP,
 		Common::kPlatformWindows,
 		ADGF_UNSTABLE |
 		ADGF_DEMO,


Commit: 1396052dc9ee95618c7d57f9230803bccb2f99d9
    https://github.com/scummvm/scummvm/commit/1396052dc9ee95618c7d57f9230803bccb2f99d9
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-07-30T19:26:28-07:00

Commit Message:
WINTERMUTE: Add hack to allow language-selection in James Peris demo.

Changed paths:
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h



diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index d2cf7d1..0f0d928 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -1276,11 +1276,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 		stack->correctParams(2);
 		const char *key = stack->pop()->getString();
 		const char *initVal = stack->pop()->getString();
-		Common::String privKey = "wme_" + StringUtil::encodeSetting(key);
-		Common::String result = initVal;
-		if (ConfMan.hasKey(privKey)) {
-			result = StringUtil::decodeSetting(ConfMan.get(key));
-		}
+		Common::String result = readRegistryString(key, initVal);
 		stack->pushString(result.c_str());
 		return STATUS_OK;
 	}
@@ -3902,4 +3898,26 @@ char *BaseGame::getKeyFromStringTable(const char *str) const {
 	return _settings->getKeyFromStringTable(str);
 }
 
+Common::String BaseGame::readRegistryString(const Common::String &key, const Common::String &initValue) const {
+	// Game specific hacks:
+	Common::String result = initValue;
+	// James Peris:
+	if (BaseEngine::instance().getGameId() == "jamesperis" && key == "Language") {
+		Common::Language language = BaseEngine::instance().getLanguage();
+		if (language == Common::EN_ANY) {
+			result = "english";
+		} else if (language == Common::ES_ESP) {
+			result = "spanish";
+		} else {
+			error("Invalid language set for James Peris");
+		}
+	} else { // Just fallback to using ConfMan for now
+		Common::String privKey = "wme_" + StringUtil::encodeSetting(key);
+		if (ConfMan.hasKey(privKey)) {
+			result = StringUtil::decodeSetting(ConfMan.get(key));
+		}
+	}
+	return result;
+}
+
 } // end of namespace Wintermute
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 1943024..f635339 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -343,6 +343,8 @@ private:
 	bool isDoubleClick(int32 buttonIndex);
 	uint32 _usedMem;
 
+// TODO: This should be expanded into a proper class eventually:
+	Common::String readRegistryString(const Common::String &key, const Common::String &initValue) const;
 
 
 protected:






More information about the Scummvm-git-logs mailing list