[Scummvm-cvs-logs] SF.net SVN: scummvm: [26381] scummvm/trunk/engines/parallaction
peres001 at users.sourceforge.net
peres001 at users.sourceforge.net
Wed Apr 4 22:59:32 CEST 2007
Revision: 26381
http://scummvm.svn.sourceforge.net/scummvm/?rev=26381&view=rev
Author: peres001
Date: 2007-04-04 13:59:31 -0700 (Wed, 04 Apr 2007)
Log Message:
-----------
Characters now only store the set of frames they actually need. Basically, mini characters and normal characters are now completely separated.
Modified Paths:
--------------
scummvm/trunk/engines/parallaction/parallaction.cpp
scummvm/trunk/engines/parallaction/parallaction.h
Modified: scummvm/trunk/engines/parallaction/parallaction.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.cpp 2007-04-04 13:01:09 UTC (rev 26380)
+++ scummvm/trunk/engines/parallaction/parallaction.cpp 2007-04-04 20:59:31 UTC (rev 26381)
@@ -701,17 +701,14 @@
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 @@
}
}
-// 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;
-
+ 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 @@
_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);
+ _vm->_char._head = _disk->loadHead(baseName);
+ _vm->_char._talk = _disk->loadTalk(baseName);
+ _vm->_char._objs = _disk->loadObjects(baseName);
+ _objectsNames = _disk->loadTable(baseName);
+ refreshInventory(baseName);
- sprintf(path, "mini%s", v32);
- _vm->_char._miniFrames = _disk->loadFrames(path);
+ _vm->_char._ani._cnv = _disk->loadFrames(fullName);
- _objectsNames = _disk->loadTable(name);
-
- refreshInventory(name);
-
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;
}
Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h 2007-04-04 13:01:09 UTC (rev 26380)
+++ scummvm/trunk/engines/parallaction/parallaction.h 2007-04-04 20:59:31 UTC (rev 26381)
@@ -220,8 +220,6 @@
Animation _ani;
StaticCnv *_head;
Cnv *_talk;
- Cnv *_normalFrames;
- Cnv *_miniFrames;
Cnv *_objs;
Character() {
@@ -249,9 +247,6 @@
_ani._type = kZoneYou;
_ani._label._cnv._data0 = NULL;
_ani._label._text = strdup("yourself");
-
- _normalFrames = NULL;
- _miniFrames = NULL;
}
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list