diff options
| -rw-r--r-- | engines/parallaction/parallaction.cpp | 60 | ||||
| -rw-r--r-- | engines/parallaction/parallaction.h | 5 | 
2 files changed, 19 insertions, 46 deletions
| diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index b6e917367c..c8f2447039 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -701,17 +701,14 @@ void Parallaction::changeCursor(int32 index) {  void Parallaction::freeCharacter() { -	if (_vm->_char._normalFrames) -		delete _vm->_char._normalFrames; -  	if (!IS_DUMMY_CHARACTER(_vm->_characterName)) { -		if (_vm->_char._miniFrames) -			delete _vm->_char._miniFrames; -  		if (_objectsNames)  			delete _objectsNames;  		_objectsNames = NULL; +		if (_vm->_char._ani._cnv) +			delete _vm->_char._ani._cnv; +  		if (_vm->_char._talk)  			delete _vm->_char._talk; @@ -769,28 +766,22 @@ void Parallaction::pickMusic(const char *location) {  	}  } -//	FIXME: currently, changeCharacter does reload every chunk of -//	information about the new character every time it is loaded. -//	So, it is useless to load both mini and normal frames each -//	since only one of them will actually be used before the -//	following call to changeCharacter. -// -void Parallaction::changeCharacter(const char *name) { -	bool miniCharacter = false; +void Parallaction::changeCharacter(const char *name) { +	char baseName[20];  	if (IS_MINI_CHARACTER(name)) { -		name+=4; -		miniCharacter = true; +		strcpy(baseName, name+4); +	} else { +		strcpy(baseName, name);  	} -	char v32[20]; -	strcpy(v32, name); - +	char fullName[20]; +	strcpy(fullName, name);  	if (_engineFlags & kEngineTransformedDonna) -		strcat(v32, "tras"); +		strcat(fullName, "tras"); -	if (scumm_stricmp(v32, _characterName1)) { +	if (scumm_stricmp(fullName, _characterName1)) {  		// freeCharacter takes responsibility for checking  		// character for sanity before memory is freed @@ -798,37 +789,24 @@ void Parallaction::changeCharacter(const char *name) {  		_disk->selectArchive((_vm->getPlatform() == Common::kPlatformPC) ? "disk1" : "disk0"); -		char path[PATH_LEN]; -		strcpy(path, v32); -		_vm->_char._normalFrames = _disk->loadFrames(path); - -  		if (!IS_DUMMY_CHARACTER(name)) { -			_vm->_char._head = _disk->loadHead(path); -			_vm->_char._talk = _disk->loadTalk(path); -			_vm->_char._objs = _disk->loadObjects(name); - -			sprintf(path, "mini%s", v32); -			_vm->_char._miniFrames = _disk->loadFrames(path); +			_vm->_char._head = _disk->loadHead(baseName); +			_vm->_char._talk = _disk->loadTalk(baseName); +			_vm->_char._objs = _disk->loadObjects(baseName); +			_objectsNames = _disk->loadTable(baseName); +			refreshInventory(baseName); -			_objectsNames = _disk->loadTable(name); - -			refreshInventory(name); +			_vm->_char._ani._cnv = _disk->loadFrames(fullName);  			if (scumm_stricmp(name, "night") && scumm_stricmp(name, "intsushi"))  				selectCharacterMusic(name);  		}  	} -	if (miniCharacter) -		_vm->_char._ani._cnv = _vm->_char._miniFrames; -	else -		_vm->_char._ani._cnv = _vm->_char._normalFrames; -  	if (!(getFeatures() & GF_DEMO))  		parseLocation("common"); -	strcpy(_characterName1, v32); +	strcpy(_characterName1, fullName);  	return;  } diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 176ab9cccb..f5c006ece5 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -220,8 +220,6 @@ struct Character {  	Animation		_ani;  	StaticCnv		*_head;  	Cnv		    	*_talk; -	Cnv 			*_normalFrames; -	Cnv				*_miniFrames;  	Cnv 			*_objs;  	Character() { @@ -249,9 +247,6 @@ struct Character {  		_ani._type = kZoneYou;  		_ani._label._cnv._data0 = NULL;  		_ani._label._text = strdup("yourself"); - -		_normalFrames = NULL; -		_miniFrames = NULL;  	}  }; | 
