diff options
-rw-r--r-- | engines/mohawk/myst.cpp | 112 | ||||
-rw-r--r-- | engines/mohawk/myst.h | 3 |
2 files changed, 61 insertions, 54 deletions
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp index 9462663fee..35b1b6809f 100644 --- a/engines/mohawk/myst.cpp +++ b/engines/mohawk/myst.cpp @@ -262,14 +262,21 @@ Common::Error MohawkEngine_Myst::run() { // Test Load Function... loadHelp(10000); - Common::Event event; while (!shouldQuit()) { - // Update any background videos - _video->updateMovies(); - _scriptParser->runPersistentScripts(); + doFrame(); + } - while (pollEvent(event)) { - switch (event.type) { + return Common::kNoError; +} + +void MohawkEngine_Myst::doFrame() { + // Update any background videos + _video->updateMovies(); + _scriptParser->runPersistentScripts(); + + Common::Event event; + while (pollEvent(event)) { + switch (event.type) { case Common::EVENT_MOUSEMOVE: { if (_clickedResource && _clickedResource->isEnabled()) { _clickedResource->handleMouseDrag(); @@ -290,66 +297,63 @@ Common::Error MohawkEngine_Myst::run() { break; case Common::EVENT_KEYDOWN: switch (event.kbd.keycode) { - case Common::KEYCODE_d: - if (event.kbd.flags & Common::KBD_CTRL) { - _console->attach(); - _console->onFrame(); - } - break; - case Common::KEYCODE_SPACE: - pauseGame(); - break; - case Common::KEYCODE_F5: - _needsPageDrop = false; - _needsShowMap = false; - _needsShowDemoMenu = false; - _needsShowCredits = false; - - _canSafelySaveLoad = true; - runDialog(*_optionsDialog); - if (_optionsDialog->getLoadSlot() >= 0) - loadGameState(_optionsDialog->getLoadSlot()); - _canSafelySaveLoad = false; - - if (_needsPageDrop) { - dropPage(); + case Common::KEYCODE_d: + if (event.kbd.flags & Common::KBD_CTRL) { + _console->attach(); + _console->onFrame(); + } + break; + case Common::KEYCODE_SPACE: + pauseGame(); + break; + case Common::KEYCODE_F5: _needsPageDrop = false; - } - - if (_needsShowMap) { - _scriptParser->showMap(); _needsShowMap = false; - } - - if (_needsShowDemoMenu) { - changeToStack(kDemoStack, 2002, 0, 0); _needsShowDemoMenu = false; - } - - if (_needsShowCredits) { - _cursor->hideCursor(); - changeToStack(kCreditsStack, 10000, 0, 0); _needsShowCredits = false; - } - break; - default: - break; + + _canSafelySaveLoad = true; + runDialog(*_optionsDialog); + if (_optionsDialog->getLoadSlot() >= 0) + loadGameState(_optionsDialog->getLoadSlot()); + _canSafelySaveLoad = false; + + if (_needsPageDrop) { + dropPage(); + _needsPageDrop = false; + } + + if (_needsShowMap) { + _scriptParser->showMap(); + _needsShowMap = false; + } + + if (_needsShowDemoMenu) { + changeToStack(kDemoStack, 2002, 0, 0); + _needsShowDemoMenu = false; + } + + if (_needsShowCredits) { + _cursor->hideCursor(); + changeToStack(kCreditsStack, 10000, 0, 0); + _needsShowCredits = false; + } + break; + default: + break; } break; default: break; - } } + } - checkCurrentResource(); - - _system->updateScreen(); + checkCurrentResource(); - // Cut down on CPU usage - _system->delayMillis(10); - } + _system->updateScreen(); - return Common::kNoError; + // Cut down on CPU usage + _system->delayMillis(10); } bool MohawkEngine_Myst::pollEvent(Common::Event &event) { diff --git a/engines/mohawk/myst.h b/engines/mohawk/myst.h index 00aaff3c33..dc07f453ea 100644 --- a/engines/mohawk/myst.h +++ b/engines/mohawk/myst.h @@ -190,6 +190,9 @@ public: void pollAndDiscardEvents(); bool wait(uint32 duration, bool skippable = false); + /** Update the game state according to events and update the screen */ + void doFrame(); + MystSoundBlock readSoundBlock(Common::ReadStream *stream) const; void applySoundBlock(const MystSoundBlock &block); |