aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/parallaction.cpp')
-rw-r--r--engines/parallaction/parallaction.cpp63
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();