aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction_br.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/parallaction_br.cpp')
-rw-r--r--engines/parallaction/parallaction_br.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp
index 01b3815e6d..60f6bfe329 100644
--- a/engines/parallaction/parallaction_br.cpp
+++ b/engines/parallaction/parallaction_br.cpp
@@ -181,20 +181,41 @@ void Parallaction_br::startPart() {
strcpy(_location._name, partFirstLocation[_part]);
parseLocation("common");
- parseLocation(_location._name);
-
changeLocation(_location._name);
}
+void Parallaction_br::runPendingZones() {
+ Zone *z;
+
+ if (_activeZone) {
+ z = _activeZone; // speak Zone or sound
+ _activeZone = NULL;
+ runZone(z);
+ }
+
+ if (_activeZone2) {
+ z = _activeZone2; // speak Zone or sound
+ _activeZone2 = NULL;
+ runZone(z);
+ }
+}
+
+
void Parallaction_br::changeLocation(char *location) {
- runCommands(_location._commands);
+ // free open location stuff
+ clearSubtitles();
-// doLocationEnterTransition();
+ freeLocation();
+ // load new location
+ parseLocation(location);
+ runCommands(_location._commands);
+// doLocationEnterTransition();
runCommands(_location._aCommands);
+ _engineFlags &= ~kEngineChangeLocation;
}
void Parallaction_br::changeCharacter(const char *name) {