simplified character mode handling
svn-id: r26074
This commit is contained in:
parent
4e5aa19f74
commit
93d910bf2d
4 changed files with 27 additions and 16 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue