diff options
Diffstat (limited to 'engines/mohawk/myst.cpp')
-rw-r--r-- | engines/mohawk/myst.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index 6bdf163a91..eeb4594f3c 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -343,6 +343,7 @@ Common::Error MohawkEngine_Myst::run() { case Common::KEYCODE_F5: _needsPageDrop = false; _needsShowMap = false; + _needsShowDemoMenu = false; runDialog(*_optionsDialog); @@ -355,6 +356,11 @@ Common::Error MohawkEngine_Myst::run() { _scriptParser->showMap(); _needsShowMap = false; } + + if (_needsShowDemoMenu) { + changeToStack(kDemoStack, 2002, 0, 0); + _needsShowDemoMenu = false; + } break; default: break; @@ -441,6 +447,7 @@ void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcS _scriptParser = new MystStacks::Credits(this); break; case kDemoStack: + _gameState->_globals.currentAge = 0; _scriptParser = new MystStacks::Demo(this); break; case kDniStack: @@ -469,6 +476,7 @@ void MohawkEngine_Myst::changeToStack(uint16 stack, uint16 card, uint16 linkSrcS _scriptParser = new MystStacks::Selenitic(this); break; case kDemoSlidesStack: + _gameState->_globals.currentAge = 1; _scriptParser = new MystStacks::Slides(this); break; case kStoneshipStack: @@ -645,7 +653,11 @@ void MohawkEngine_Myst::changeToCard(uint16 card, bool updateScreen) { for (uint16 i = 0; i < _resources.size(); i++) _resources[i]->handleCardChange(); - // TODO: Handle Script Resources + // The demo resets the cursor at each card change except when in the library + if (getFeatures() & GF_DEMO + && _gameState->_globals.currentAge != 2) { + _cursor->setDefaultCursor(); + } // Make sure the screen is updated if (updateScreen) { |