diff options
-rw-r--r-- | engines/parallaction/input.cpp | 9 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 21 |
2 files changed, 26 insertions, 4 deletions
diff --git a/engines/parallaction/input.cpp b/engines/parallaction/input.cpp index 4904e63df6..3bedebb7f3 100644 --- a/engines/parallaction/input.cpp +++ b/engines/parallaction/input.cpp @@ -212,6 +212,8 @@ int Input::updateGameInput() { int Input::updateInput() { + int oldMode = _inputMode; + int event = kEvNone; readInput(); @@ -225,6 +227,13 @@ int Input::updateInput() { break; } + // when mode changes, then consider any input consumed + // for the current frame + if (oldMode != _inputMode) { + _mouseButtons = kEvNone; + _hasKeyPressEvent = false; + } + return event; } diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index d8e5a43631..272152cd69 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -341,10 +341,23 @@ void Parallaction::runGame() { if (shouldQuit()) return; - runGuiFrame(); - runDialogueFrame(); - runCommentFrame(); - runGameFrame(event); + switch (_input->_inputMode) { + case Input::kInputModeMenu: + runGuiFrame(); + break; + + case Input::kInputModeDialogue: + runDialogueFrame(); + break; + + case Input::kInputModeComment: + runCommentFrame(); + break; + + case Input::kInputModeGame: + runGameFrame(event); + break; + } if (shouldQuit()) return; |