diff options
Diffstat (limited to 'engines/parallaction/parallaction.cpp')
-rw-r--r-- | engines/parallaction/parallaction.cpp | 63 |
1 files changed, 29 insertions, 34 deletions
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index e2d5fc61df..6db48f7846 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -308,24 +308,39 @@ void Parallaction::showLocationComment(const Common::String &text, bool end) { } -void Parallaction::processInput(int event) { +void Parallaction::runGameFrame(int event) { + if (_input->_inputMode != Input::kInputModeGame) { + return; + } - switch (event) { - case kEvSaveGame: + if (event != kEvNone) { _input->stopHovering(); - _saveLoad->saveGame(); + if (event == kEvSaveGame) { + _saveLoad->saveGame(); + } else + if (event == kEvLoadGame) { + _saveLoad->loadGame(); + } _input->setArrowCursor(); - break; + } - case kEvLoadGame: - _input->stopHovering(); - _saveLoad->loadGame(); - _input->setArrowCursor(); - break; + runPendingZones(); + if (shouldQuit()) + return; + + if (_engineFlags & kEngineChangeLocation) { + changeLocation(_location._name); } - return; + _programExec->runScripts(_location._programs.begin(), _location._programs.end()); + _char._ani->setZ(_char._ani->height() + _char._ani->getFrameY()); + if (_char._ani->gfxobj) { + _char._ani->gfxobj->z = _char._ani->getZ(); + } + _char._walker->walk(); + drawAnimations(); + } void Parallaction::runGame() { @@ -337,30 +352,10 @@ void Parallaction::runGame() { runGuiFrame(); runDialogueFrame(); runCommentFrame(); + runGameFrame(event); - if (_input->_inputMode == Input::kInputModeGame) { - processInput(event); - runPendingZones(); - - if (shouldQuit()) - return; - - if (_engineFlags & kEngineChangeLocation) { - changeLocation(_location._name); - } - } - - _gfx->beginFrame(); - - if (_input->_inputMode == Input::kInputModeGame) { - _programExec->runScripts(_location._programs.begin(), _location._programs.end()); - _char._ani->setZ(_char._ani->height() + _char._ani->getFrameY()); - if (_char._ani->gfxobj) { - _char._ani->gfxobj->z = _char._ani->getZ(); - } - _char._walker->walk(); - drawAnimations(); - } + if (shouldQuit()) + return; // change this to endFrame? updateView(); |