diff options
author | Bastien Bouclet | 2018-09-09 16:05:10 +0200 |
---|---|---|
committer | Bastien Bouclet | 2018-09-09 16:11:12 +0200 |
commit | 22ded2c406ea07fb14d1127bcbbc3043815dd2da (patch) | |
tree | c9e108cec210365533cc775b6253fb1db734e65d /engines/mohawk | |
parent | d7b511b98ba160339b8d302d7b585fb09ba0517c (diff) | |
download | scummvm-rg350-22ded2c406ea07fb14d1127bcbbc3043815dd2da.tar.gz scummvm-rg350-22ded2c406ea07fb14d1127bcbbc3043815dd2da.tar.bz2 scummvm-rg350-22ded2c406ea07fb14d1127bcbbc3043815dd2da.zip |
MOHAWK: RIVEN: Don't allow opening the main menu from the config screens
Diffstat (limited to 'engines/mohawk')
-rw-r--r-- | engines/mohawk/riven.cpp | 30 | ||||
-rw-r--r-- | engines/mohawk/riven.h | 3 |
2 files changed, 18 insertions, 15 deletions
diff --git a/engines/mohawk/riven.cpp b/engines/mohawk/riven.cpp index 057102260d..a17d5f77b9 100644 --- a/engines/mohawk/riven.cpp +++ b/engines/mohawk/riven.cpp @@ -335,18 +335,15 @@ void MohawkEngine_Riven::processInput() { } void MohawkEngine_Riven::goToMainMenu() { - _menuSavedStack = _stack->getId(); - _menuSavedCard = _card->getId(); - - // If we are already in menu, do not call again - if (_menuSavedStack == kStackAspit && _menuSavedCard == 1) { - _menuSavedStack = -1; - _menuSavedCard = -1; + if (isInMainMenu()) { return; } - _menuTumbnail.reset(new Graphics::Surface()); - createThumbnailFromScreen(_menuTumbnail.get()); + _menuSavedStack = _stack->getId(); + _menuSavedCard = _card->getId(); + + _menuThumbnail.reset(new Graphics::Surface()); + createThumbnailFromScreen(_menuThumbnail.get()); RivenCommand *go = new RivenStackChangeCommand(this, kStackAspit, 1, true, true); RivenScriptPtr goScript = _scriptMan->createScriptWithCommand(go); @@ -362,11 +359,16 @@ void MohawkEngine_Riven::resumeFromMainMenu() { _menuSavedStack = -1; _menuSavedCard = -1; - _menuTumbnail.reset(); + _menuThumbnail.reset(); +} + +bool MohawkEngine_Riven::isInMainMenu() const { + static const uint16 kCardIdAspitAtrusJournal = 5; + return _stack->getId() == kStackAspit && _card->getId() < kCardIdAspitAtrusJournal; } bool MohawkEngine_Riven::isGameStarted() const { - return _stack->getId() != kStackAspit || _menuSavedStack != -1; + return !isInMainMenu() || _menuSavedStack != -1; } void MohawkEngine_Riven::pauseEngineIntern(bool pause) { @@ -646,7 +648,7 @@ void MohawkEngine_Riven::startNewGame() { // Clear all the state data _menuSavedStack = -1; _menuSavedCard = -1; - _menuTumbnail.reset(); + _menuThumbnail.reset(); _vars.clear(); initVars(); @@ -692,7 +694,7 @@ Common::Error MohawkEngine_Riven::loadGameState(int slot) { if (loadError.getCode() == Common::kNoError) { _menuSavedStack = -1; _menuSavedCard = -1; - _menuTumbnail.reset(); + _menuThumbnail.reset(); } return loadError; @@ -719,7 +721,7 @@ Common::Error MohawkEngine_Riven::saveGameState(int slot, const Common::String & _vars["CurrentCardID"] = _menuSavedCard; } - const Graphics::Surface *thumbnail = _menuSavedStack != -1 ? _menuTumbnail.get() : nullptr; + const Graphics::Surface *thumbnail = _menuSavedStack != -1 ? _menuThumbnail.get() : nullptr; Common::Error error = _saveLoad->saveGame(slot, desc, thumbnail, autosave); if (_menuSavedStack != -1) { diff --git a/engines/mohawk/riven.h b/engines/mohawk/riven.h index e938d2711c..b4084caec8 100644 --- a/engines/mohawk/riven.h +++ b/engines/mohawk/riven.h @@ -126,7 +126,7 @@ private: int _menuSavedCard; int _menuSavedStack; - Common::ScopedPtr<Graphics::Surface, Graphics::SurfaceDeleter> _menuTumbnail; + Common::ScopedPtr<Graphics::Surface, Graphics::SurfaceDeleter> _menuThumbnail; bool _gameEnded; uint32 _lastSaveTime; @@ -180,6 +180,7 @@ public: // Main menu handling void goToMainMenu(); void resumeFromMainMenu(); + bool isInMainMenu() const; bool isGameStarted() const; void startNewGame(); }; |