aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction_br.cpp
diff options
context:
space:
mode:
authorNicola Mettifogo2008-07-11 13:06:28 +0000
committerNicola Mettifogo2008-07-11 13:06:28 +0000
commit8ed023142a9ce0ee825eb3d6c33759281d68357b (patch)
treefe01c86cc8d04a88fb82a29e79279c25c4e8e922 /engines/parallaction/parallaction_br.cpp
parentfe655836575214c33c82120e9dd714b95a96e475 (diff)
downloadscummvm-rg350-8ed023142a9ce0ee825eb3d6c33759281d68357b.tar.gz
scummvm-rg350-8ed023142a9ce0ee825eb3d6c33759281d68357b.tar.bz2
scummvm-rg350-8ed023142a9ce0ee825eb3d6c33759281d68357b.zip
Moved program and command execution code out of the engine, into their own brand new
classes. svn-id: r33003
Diffstat (limited to 'engines/parallaction/parallaction_br.cpp')
-rw-r--r--engines/parallaction/parallaction_br.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp
index c382f6a7f6..6606550132 100644
--- a/engines/parallaction/parallaction_br.cpp
+++ b/engines/parallaction/parallaction_br.cpp
@@ -72,12 +72,16 @@ int Parallaction_br::init() {
initResources();
initFonts();
initCursors();
- initOpcodes();
_locationParser = new LocationParser_br(this);
_locationParser->init();
_programParser = new ProgramParser_br(this);
_programParser->init();
+ _cmdExec = new CommandExec_br(this);
+ _cmdExec->init();
+ _programExec = new ProgramExec_br(this);
+ _programExec->init();
+
_part = -1;
_subtitle[0] = -1;
@@ -226,8 +230,14 @@ void Parallaction_br::changeLocation(char *location) {
freeBackground();
_gfx->clearGfxObjects(kGfxObjNormal | kGfxObjCharacter);
_location._programs.clear();
+
+ _location._animations.remove(_char._ani);
+
freeZones();
freeAnimations();
+
+ _location._animations.push_front(_char._ani);
+
// free(_location._comment);
// _location._comment = 0;
// _location._commands.clear();
@@ -236,9 +246,9 @@ void Parallaction_br::changeLocation(char *location) {
// load new location
parseLocation(location);
- runCommands(_location._commands);
+ _cmdExec->run(_location._commands);
// doLocationEnterTransition();
- runCommands(_location._aCommands);
+ _cmdExec->run(_location._aCommands);
_engineFlags &= ~kEngineChangeLocation;
}
@@ -287,12 +297,16 @@ void Parallaction_br::loadProgram(AnimationPtr a, const char *filename) {
void Parallaction_br::changeCharacter(const char *name) {
+ printf("changeCharacter(%s)\n", name);
+
const char *charName = _char.getName();
if (!scumm_stricmp(charName, name)) {
return;
}
_char.setName(name);
+ _char._ani->gfxobj = _gfx->loadAnim(name);
+ _char._ani->gfxobj->setFlags(kGfxObjCharacter);
_char._talk = _disk->loadTalk(name);
}