aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk
diff options
context:
space:
mode:
authorBastien Bouclet2017-07-09 12:13:17 +0200
committerBastien Bouclet2017-07-22 20:38:56 +0200
commitee9328323b7f6fc9796df51d88ed76e3a7ca67dd (patch)
tree8dcbc914a1a7116255fb932fefceb5870dada7c1 /engines/mohawk
parent3c04ad0227ea1ef48ca16afbe5545306d8cb4312 (diff)
downloadscummvm-rg350-ee9328323b7f6fc9796df51d88ed76e3a7ca67dd.tar.gz
scummvm-rg350-ee9328323b7f6fc9796df51d88ed76e3a7ca67dd.tar.bz2
scummvm-rg350-ee9328323b7f6fc9796df51d88ed76e3a7ca67dd.zip
MOHAWK: Myst: Move frame handling to a separate method
Diffstat (limited to 'engines/mohawk')
-rw-r--r--engines/mohawk/myst.cpp112
-rw-r--r--engines/mohawk/myst.h3
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);