aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Mettifogo2008-02-05 10:24:22 +0000
committerNicola Mettifogo2008-02-05 10:24:22 +0000
commitdabefdce05e466fae8bf540b94886eadc7c4953d (patch)
tree09abd848918bd3f181eac6d11f6a21f6b3f33651
parent17fdd182b6727220329efec61fbeed2c6b3feb8d (diff)
downloadscummvm-rg350-dabefdce05e466fae8bf540b94886eadc7c4953d.tar.gz
scummvm-rg350-dabefdce05e466fae8bf540b94886eadc7c4953d.tar.bz2
scummvm-rg350-dabefdce05e466fae8bf540b94886eadc7c4953d.zip
Changed main loop to allow BRA to return to menu after intro.
svn-id: r30798
-rw-r--r--engines/parallaction/exec_br.cpp2
-rw-r--r--engines/parallaction/gui_br.cpp2
-rw-r--r--engines/parallaction/parallaction.cpp27
-rw-r--r--engines/parallaction/parallaction.h5
-rw-r--r--engines/parallaction/parallaction_br.cpp10
-rw-r--r--engines/parallaction/parallaction_ns.cpp5
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;
}