diff options
-rw-r--r-- | engines/parallaction/exec_br.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/gui_br.cpp | 2 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 27 | ||||
-rw-r--r-- | engines/parallaction/parallaction.h | 5 | ||||
-rw-r--r-- | engines/parallaction/parallaction_br.cpp | 10 | ||||
-rw-r--r-- | engines/parallaction/parallaction_ns.cpp | 5 |
6 files changed, 28 insertions, 23 deletions
diff --git a/engines/parallaction/exec_br.cpp b/engines/parallaction/exec_br.cpp index 7826ddaeae..a0a742e779 100644 --- a/engines/parallaction/exec_br.cpp +++ b/engines/parallaction/exec_br.cpp @@ -279,7 +279,7 @@ DECLARE_COMMAND_OPCODE(testsfx) { DECLARE_COMMAND_OPCODE(ret) { - warning("Parallaction_br::cmdOp_ret not yet implemented"); + _engineFlags |= kEngineReturn; } diff --git a/engines/parallaction/gui_br.cpp b/engines/parallaction/gui_br.cpp index f909de275c..592de7bf9b 100644 --- a/engines/parallaction/gui_br.cpp +++ b/engines/parallaction/gui_br.cpp @@ -41,8 +41,6 @@ enum MenuOptions { void Parallaction_br::guiStart() { - guiSplash("dyna"); - guiSplash("core"); // TODO: load progress value from special save game _progress = 3; diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index af5f0f2cfd..be81bdc4e1 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -245,27 +245,22 @@ void waitUntilLeftClick() { void Parallaction::runGame() { - _inputMode = kInputModeGame; - - while ((_engineFlags & kEngineQuit) == 0) { - updateInput(); - - runPendingZones(); - - if (_engineFlags & kEngineChangeLocation) { - changeLocation(_location._name); - } + updateInput(); - if (_inputMode == kInputModeGame) { - runScripts(); - walk(); - drawAnimations(); - } + runPendingZones(); - updateView(); + if (_engineFlags & kEngineChangeLocation) { + changeLocation(_location._name); + } + if (_inputMode == kInputModeGame) { + runScripts(); + walk(); + drawAnimations(); } + updateView(); + } void Parallaction::updateView() { diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 8c6e33c983..09d0eabb73 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -111,7 +111,10 @@ enum EngineFlags { kEngineChangeLocation = (1 << 4), kEngineBlockInput = (1 << 5), kEngineDragging = (1 << 6), - kEngineTransformedDonna = (1 << 7) + kEngineTransformedDonna = (1 << 7), + + // BRA specific + kEngineReturn = (1 << 10) }; enum { diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp index edae8c9f37..089d38ce81 100644 --- a/engines/parallaction/parallaction_br.cpp +++ b/engines/parallaction/parallaction_br.cpp @@ -96,16 +96,22 @@ void Parallaction_br::callFunction(uint index, void* parm) { int Parallaction_br::go() { + guiSplash("dyna"); + guiSplash("core"); + while ((_engineFlags & kEngineQuit) == 0) { guiStart(); // initCharacter(); - runGame(); + _inputMode = kInputModeGame; + while ((_engineFlags & (kEngineReturn | kEngineQuit)) == 0) { + runGame(); + } + _engineFlags &= ~kEngineReturn; freePart(); -// freeLocation(); // freeCharacter(); } diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp index 945702bd25..a0af2107e3 100644 --- a/engines/parallaction/parallaction_ns.cpp +++ b/engines/parallaction/parallaction_ns.cpp @@ -240,7 +240,10 @@ int Parallaction_ns::go() { changeLocation(_location._name); - runGame(); + _inputMode = kInputModeGame; + while ((_engineFlags & kEngineQuit) == 0) { + runGame(); + } return 0; } |