From aa97ca45aed4d5b4a344fd4853778f4b8629fb3d Mon Sep 17 00:00:00 2001 From: lolbot-iichan Date: Mon, 27 Aug 2018 01:08:59 +0300 Subject: [PATCH] WINTERMUTE: Add FoxTail version properties FoxTail requires 2 new game properties that are used to display game version at Options menu. I mapped BuildVersion to ScummVM version and GameVersion to last number in detected game version. I guess we need to discuss, what those versions should actually be. --- engines/wintermute/base/base_engine.cpp | 3 ++- engines/wintermute/base/base_engine.h | 4 +++- engines/wintermute/base/base_game.cpp | 27 +++++++++++++++++++++++++ engines/wintermute/wintermute.cpp | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/engines/wintermute/base/base_engine.cpp b/engines/wintermute/base/base_engine.cpp index 4ce334aceb8b..c8dec066f6af 100644 --- a/engines/wintermute/base/base_engine.cpp +++ b/engines/wintermute/base/base_engine.cpp @@ -61,9 +61,10 @@ BaseEngine::~BaseEngine() { delete _classReg; } -void BaseEngine::createInstance(const Common::String &targetName, const Common::String &gameId, Common::Language lang, WMETargetExecutable targetExecutable) { +void BaseEngine::createInstance(const Common::String &targetName, const Common::String &gameId, const Common::String &extra, Common::Language lang, WMETargetExecutable targetExecutable) { instance()._targetName = targetName; instance()._gameId = gameId; + instance()._gameIdExtra = extra; instance()._language = lang; instance()._targetExecutable = targetExecutable; instance().init(); diff --git a/engines/wintermute/base/base_engine.h b/engines/wintermute/base/base_engine.h index 905d227d3c26..892d23a42293 100644 --- a/engines/wintermute/base/base_engine.h +++ b/engines/wintermute/base/base_engine.h @@ -63,6 +63,7 @@ class BaseEngine : public Common::Singleton { void init(); BaseFileManager *_fileManager; Common::String _gameId; + Common::String _gameIdExtra; Common::String _targetName; BaseGame *_gameRef; // We need random numbers @@ -73,7 +74,7 @@ class BaseEngine : public Common::Singleton { public: BaseEngine(); ~BaseEngine(); - static void createInstance(const Common::String &targetName, const Common::String &gameId, Common::Language lang, WMETargetExecutable targetExecutable = LATEST_VERSION); + static void createInstance(const Common::String &targetName, const Common::String &gameId, const Common::String &extra, Common::Language lang, WMETargetExecutable targetExecutable = LATEST_VERSION); void setGameRef(BaseGame *gameRef) { _gameRef = gameRef; } @@ -90,6 +91,7 @@ class BaseEngine : public Common::Singleton { static void LOG(bool res, const char *fmt, ...); Common::String getGameTargetName() const { return _targetName; } Common::String getGameId() const { return _gameId; } + Common::String getGameIdExtra() const { return _gameIdExtra; } Common::Language getLanguage() const { return _language; } WMETargetExecutable getTargetExecutable() const { return _targetExecutable; diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp index cb062e0b2b3a..139fa66c5a58 100644 --- a/engines/wintermute/base/base_game.cpp +++ b/engines/wintermute/base/base_game.cpp @@ -2337,6 +2337,33 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) { } return _scValue; } + + ////////////////////////////////////////////////////////////////////////// + // [FoxTail] BuildVersion (RO) + // Used to display full game version at options.script in UpdateControls() + // Returns engine version number as a dotted string "1.2.362" + // This implementation returns ScummVM version instead + ////////////////////////////////////////////////////////////////////////// + else if (name == "BuildVersion") { + _scValue->setString(gScummVMVersion); + return _scValue; + } + + ////////////////////////////////////////////////////////////////////////// + // [FoxTail] GameVersion (RO) + // Used to display full game version at options.script in UpdateControls() + // Returns FoxTail version number as a string + ////////////////////////////////////////////////////////////////////////// + else if (name == "GameVersion") { + if (BaseEngine::instance().getGameIdExtra() == "1.2.230.1291") { + _scValue->setString("1291"); + } else if (BaseEngine::instance().getGameIdExtra() == "1.2.362.2047") { + _scValue->setString("2047"); + } else { + _scValue->setString("UNKNOWN"); + } + return _scValue; + } #endif ////////////////////////////////////////////////////////////////////////// diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp index 21e6c589ad4e..c2ead8368f4b 100644 --- a/engines/wintermute/wintermute.cpp +++ b/engines/wintermute/wintermute.cpp @@ -144,7 +144,7 @@ Common::Error WintermuteEngine::run() { } int WintermuteEngine::init() { - BaseEngine::createInstance(_targetName, _gameDescription->adDesc.gameId, _gameDescription->adDesc.language, _gameDescription->targetExecutable); + BaseEngine::createInstance(_targetName, _gameDescription->adDesc.gameId, _gameDescription->adDesc.extra, _gameDescription->adDesc.language, _gameDescription->targetExecutable); // check dependencies for games with high resolution assets #if not defined(USE_PNG) || not defined(USE_JPEG) || not defined(USE_VORBIS)