aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/parallaction.cpp
diff options
context:
space:
mode:
authorNicola Mettifogo2007-05-12 19:33:00 +0000
committerNicola Mettifogo2007-05-12 19:33:00 +0000
commit1c6ab01f9e0ad2a25dc54f3fcc85893b2695b6d2 (patch)
tree1c24f8f1d098670af7f95f3ec88393c032eabb07 /engines/parallaction/parallaction.cpp
parentd0635b8677e6e8f47e1885ed01451b320b9e6f5f (diff)
downloadscummvm-rg350-1c6ab01f9e0ad2a25dc54f3fcc85893b2695b6d2.tar.gz
scummvm-rg350-1c6ab01f9e0ad2a25dc54f3fcc85893b2695b6d2.tar.bz2
scummvm-rg350-1c6ab01f9e0ad2a25dc54f3fcc85893b2695b6d2.zip
Fixed crashes when changing location in the introduction and removed useless code from the original engine.
svn-id: r26813
Diffstat (limited to 'engines/parallaction/parallaction.cpp')
-rw-r--r--engines/parallaction/parallaction.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index 55cef1a3c1..9e134baf9e 100644
--- a/engines/parallaction/parallaction.cpp
+++ b/engines/parallaction/parallaction.cpp
@@ -362,8 +362,6 @@ void Parallaction::runGame() {
if (_location._commands.size() > 0)
runCommands(_location._commands);
- runJobs();
-
_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
if (_location._comment)
@@ -707,6 +705,7 @@ void Parallaction::changeCursor(int32 index) {
void Parallaction::freeCharacter() {
+ debugC(3, kDebugLocation, "freeCharacter()");
if (!IS_DUMMY_CHARACTER(_vm->_characterName)) {
if (_objectsNames)
@@ -715,22 +714,27 @@ void Parallaction::freeCharacter() {
if (_vm->_char._ani._cnv)
delete _vm->_char._ani._cnv;
+ _vm->_char._ani._cnv = NULL;
if (_vm->_char._talk)
delete _vm->_char._talk;
+ _vm->_char._talk = NULL;
_vm->_gfx->freeStaticCnv(_vm->_char._head);
if (_vm->_char._head)
delete _vm->_char._head;
+ _vm->_char._head = NULL;
if (_vm->_char._objs)
delete _vm->_char._objs;
+ _vm->_char._objs = NULL;
}
return;
}
void Parallaction::changeCharacter(const char *name) {
+ debugC(1, kDebugLocation, "changeCharacter(%s)", name);
char baseName[20];
if (IS_MINI_CHARACTER(name)) {
@@ -751,6 +755,7 @@ void Parallaction::changeCharacter(const char *name) {
freeCharacter();
_disk->selectArchive((_vm->getPlatform() == Common::kPlatformPC) ? "disk1" : "disk0");
+ _vm->_char._ani._cnv = _disk->loadFrames(fullName);
if (!IS_DUMMY_CHARACTER(name)) {
_vm->_char._head = _disk->loadHead(baseName);
@@ -759,17 +764,17 @@ void Parallaction::changeCharacter(const char *name) {
_objectsNames = _disk->loadTable(baseName);
refreshInventory(baseName);
- _vm->_char._ani._cnv = _disk->loadFrames(fullName);
-
_soundMan->playCharacterMusic(name);
+
+ if ((getFeatures() & GF_DEMO) == 0)
+ parseLocation("common");
}
}
- if (!(getFeatures() & GF_DEMO))
- parseLocation("common");
-
strcpy(_characterName1, fullName);
+ debugC(1, kDebugLocation, "changeCharacter() done");
+
return;
}