aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/parallaction/disk.cpp18
-rw-r--r--engines/parallaction/parallaction.cpp12
-rw-r--r--engines/parallaction/parallaction.h11
-rw-r--r--engines/parallaction/saveload.cpp2
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);