diff options
Diffstat (limited to 'engines/parallaction/parallaction_br.cpp')
-rw-r--r-- | engines/parallaction/parallaction_br.cpp | 29 |
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) { |