diff options
author | Nicola Mettifogo | 2007-05-12 19:33:00 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2007-05-12 19:33:00 +0000 |
commit | 1c6ab01f9e0ad2a25dc54f3fcc85893b2695b6d2 (patch) | |
tree | 1c24f8f1d098670af7f95f3ec88393c032eabb07 /engines/parallaction/parallaction.cpp | |
parent | d0635b8677e6e8f47e1885ed01451b320b9e6f5f (diff) | |
download | scummvm-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.cpp | 19 |
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; } |