diff options
-rw-r--r-- | engines/parallaction/disk.cpp | 18 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 12 | ||||
-rw-r--r-- | engines/parallaction/parallaction.h | 11 | ||||
-rw-r--r-- | engines/parallaction/saveload.cpp | 2 |
4 files changed, 27 insertions, 16 deletions
diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index 7fa2f4c666..37b1a26a3e 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -179,15 +179,15 @@ void Disk::loadTalk(const char *name, Cnv *cnv) { } else { // character talk - +/* if (scumm_stricmp(name, _doughName) && scumm_stricmp(name, _dinoName) && scumm_stricmp(name, _donnaName) && scumm_stricmp(name, _drkiName)) return; - +*/ char v20[PATH_LEN]; char *v24 = const_cast<char*>(name); - if (!scumm_strnicmp(v24, "mini", 4)) { + if (IS_MINI_CHARACTER(v24)) { v24+=4; } @@ -207,10 +207,10 @@ Script* Disk::loadLocation(const char *name) { char archivefile[PATH_LEN]; - if (_vm->_characterName[0] == 'm') { + if (IS_MINI_CHARACTER(_vm->_characterName)) { sprintf(archivefile, "%s%s", _vm->_characterName+4, _vm->_languageDir); } else { - if (_vm->_characterName[0] == 'D') strcpy(archivefile, _vm->_languageDir); + if (IS_DUMMY_CHARACTER(_vm->_characterName)) strcpy(archivefile, _vm->_languageDir); else { sprintf(archivefile, "%s%s", _vm->_characterName, _vm->_languageDir); } @@ -257,13 +257,13 @@ Script* Disk::loadScript(const char* name) { void Disk::loadHead(const char* name, StaticCnv* cnv) { char path[PATH_LEN]; - +/* if (scumm_stricmp(name, _doughName) && scumm_stricmp(name, _dinoName) && scumm_stricmp(name, _donnaName) && scumm_stricmp(name, _drkiName)) return; - - if (!scumm_strnicmp(name, "mini", 4)) { +*/ + if (IS_MINI_CHARACTER(name)) { name += 4; } @@ -290,7 +290,7 @@ void Disk::loadFont(const char* name, Cnv* cnv) { void Disk::loadObjects(const char *name, Cnv* cnv) { - if (!scumm_strnicmp("mini", name, 4)) { + if (IS_MINI_CHARACTER(name)) { name += 4; } diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index 2c99ee79a6..31119419db 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -829,7 +829,7 @@ void freeCharacterFrames() { _vm->_graphics->freeCnv(&_tempFrames); - if (_vm->_characterName[0] != 'D') { + if (!IS_DUMMY_CHARACTER(_vm->_characterName)) { _vm->_graphics->freeCnv(&_miniCharacterFrames); _vm->freeTable(_objectsNames); _vm->_graphics->freeCnv(&_yourTalk); @@ -840,7 +840,7 @@ void freeCharacterFrames() { } void Parallaction::selectCharacterMusic(const char *name) { - if (!scumm_strnicmp(name, "mini", 4)) + if (IS_MINI_CHARACTER(name)) name+=4; if (!scumm_stricmp(name, _dinoName)) { @@ -859,7 +859,7 @@ void Parallaction::changeCharacter(const char *name) { bool miniCharacter = false; - if (!scumm_strnicmp(name, "mini", 4)) { + if (IS_MINI_CHARACTER(name)) { name+=4; miniCharacter = true; } @@ -885,10 +885,10 @@ void Parallaction::changeCharacter(const char *name) { strcpy(path, v32); _disk->loadFrames(path, &_tempFrames); - _disk->loadHead(path, &_yourHead); - _disk->loadTalk(path, &_yourTalk); + if (!IS_DUMMY_CHARACTER(name)) { + _disk->loadHead(path, &_yourHead); + _disk->loadTalk(path, &_yourTalk); - if (name[0] != 'D') { sprintf(path, "mini%s", v32); _disk->loadFrames(path, &_miniCharacterFrames); diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 0b45e1915a..635459a0b7 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -149,6 +149,17 @@ extern const char *_minidonnaName; extern const char *_minidoughName; extern const char *_minidrkiName; +// Various ways of detecting character modes used to exist +// inside the engine, so they have been unified in the two +// following macros. +// Mini characters are those used in far away shots, like +// the highway scenery, while Dummy characters are a mere +// workaround to keep the engine happy when showing slides. +// As a sidenote, standard sized characters' names start +// with a lowercase 'd'. +#define IS_MINI_CHARACTER(s) (((s)[0] == 'm')) +#define IS_DUMMY_CHARACTER(s) (((s)[0] == 'D')) + void waitUntilLeftClick(); void addNode(Node *list, Node *n); diff --git a/engines/parallaction/saveload.cpp b/engines/parallaction/saveload.cpp index 4e1cf8f52f..3167d495a4 100644 --- a/engines/parallaction/saveload.cpp +++ b/engines/parallaction/saveload.cpp @@ -122,7 +122,7 @@ void Parallaction::doLoadGame(uint16 slot) { strcpy(_vm->_characterName, _minidonnaName); } - if (_vm->_characterName[0] == 'm') { + if (IS_MINI_CHARACTER(_vm->_characterName)) { strcpy(filename, _vm->_characterName+4); } else { strcpy(filename, _vm->_characterName); |