diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/mohawk/riven.cpp | 29 | ||||
-rw-r--r-- | engines/mohawk/riven.h | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/engines/mohawk/riven.cpp b/engines/mohawk/riven.cpp index 648496b35e..1a2e0c3b60 100644 --- a/engines/mohawk/riven.cpp +++ b/engines/mohawk/riven.cpp @@ -73,6 +73,9 @@ MohawkEngine_Riven::MohawkEngine_Riven(OSystem *syst, const MohawkGameDescriptio _inventory = nullptr; _lastSaveTime = 0; + _prevCard = -1; + _prevStack = -1; + DebugMan.addDebugChannel(kRivenDebugScript, "Script", "Track Script Execution"); DebugMan.addDebugChannel(kRivenDebugPatches, "Patches", "Track Script Patching"); @@ -284,6 +287,32 @@ void MohawkEngine_Riven::doFrame() { } } break; + case Common::KEYCODE_ESCAPE: + if (!_scriptMan->hasQueuedScripts()) { + // Check if we haven't jumped to menu + if (_prevStack == -1) { + _prevStack = _stack->getId(); + _prevCard = _card->getId(); + + // If we are already in menu, do not call again + if (_prevStack == kStackAspit && _prevCard == 1) { + _prevStack = -1; + _prevCard = -1; + break; + } + + changeToStack(kStackAspit); + changeToCard(1); + } else { + changeToStack(_prevStack); + changeToCard(_prevCard); + _prevStack = -1; + _prevCard = -1; + } + } else { + _stack->onKeyPressed(event.kbd); + } + break; default: if (event.kbdRepeat) { continue; diff --git a/engines/mohawk/riven.h b/engines/mohawk/riven.h index 3dc19c7ee4..1cddd323d0 100644 --- a/engines/mohawk/riven.h +++ b/engines/mohawk/riven.h @@ -120,6 +120,8 @@ private: RivenCard *_card; RivenStack *_stack; + int _prevCard, _prevStack; + bool _gameEnded; uint32 _lastSaveTime; |