aboutsummaryrefslogtreecommitdiff
path: root/saga/actor.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-08-07 11:20:43 +0000
committerAndrew Kurushin2005-08-07 11:20:43 +0000
commitd3b229b0517440017e7793197921f2086cf83f3b (patch)
treed5c97fcde950aed1dfd5485063244e45e0cb2957 /saga/actor.cpp
parent215a94ae30082e396ab6179e26ab6e182602f8a7 (diff)
downloadscummvm-rg350-d3b229b0517440017e7793197921f2086cf83f3b.tar.gz
scummvm-rg350-d3b229b0517440017e7793197921f2086cf83f3b.tar.bz2
scummvm-rg350-d3b229b0517440017e7793197921f2086cf83f3b.zip
loadList -> loadActorList
some checkups svn-id: r18625
Diffstat (limited to 'saga/actor.cpp')
-rw-r--r--saga/actor.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/saga/actor.cpp b/saga/actor.cpp
index c44ac5d970..12be95416a 100644
--- a/saga/actor.cpp
+++ b/saga/actor.cpp
@@ -284,9 +284,6 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
}
Actor::~Actor() {
- int i;
- ObjectData *obj;
-
debug(9, "Actor::~Actor()");
#ifdef ACTOR_DEBUG
@@ -299,13 +296,8 @@ Actor::~Actor() {
free(_pathCell);
_actorsStrings.freeMem();
//release resources
- freeList();
-
- for (i = 0; i < _objsCount; i++) {
- obj = _objs[i];
- delete obj;
- }
- free(_objs);
+ freeActorList();
+ freeObjList();
}
bool Actor::loadActorResources(ActorData *actor) {
@@ -361,7 +353,7 @@ bool Actor::loadActorResources(ActorData *actor) {
_vm->_sprite->loadList(resourceId, actor->spriteList);
i = actor->spriteList.spriteCount;
- if ((actor->flags & kExtended)) {
+ if ((actor->flags & kExtended)) { // may be it's ITE specific ?
while ((lastFrame >= actor->spriteList.spriteCount)) {
resourceId++;
debug(9, "Appending to sprite list %d", resourceId);
@@ -372,7 +364,7 @@ bool Actor::loadActorResources(ActorData *actor) {
return true;
}
-void Actor::freeList() {
+void Actor::freeActorList() {
int i;
ActorData *actor;
for (i = 0; i < _actorsCount; i++) {
@@ -384,17 +376,21 @@ void Actor::freeList() {
_actorsCount = 0;
}
-void Actor::loadList(int actorsEntrance, int actorCount, int actorsResourceID, int protagStatesCount, int protagStatesResourceID) {
+void Actor::loadActorList(int protagonistIdx, int actorCount, int actorsResourceID, int protagStatesCount, int protagStatesResourceID) {
int i;
ActorData *actor;
byte* actorListData;
size_t actorListLength;
- freeList();
+ freeActorList();
_vm->_resource->loadResource(_actorContext, actorsResourceID, actorListData, actorListLength);
_actorsCount = actorCount;
+ if ((int)(actorListLength / ACTOR_INHM_SIZE) < _actorsCount) {
+ error("Actor::loadActorList wrong actorlist length");
+ }
+
MemoryReadStream actorS(actorListData, actorListLength);
_actors = (ActorData **)malloc(_actorsCount * sizeof(*_actors));
@@ -446,7 +442,7 @@ void Actor::loadList(int actorsEntrance, int actorCount, int actorsResourceID, i
}
free(actorListData);
- _actors[actorsEntrance]->flags |= kProtagonist | kExtended;
+ _actors[protagonistIdx]->flags |= kProtagonist | kExtended;
for (i = 0; i < _actorsCount; i++) {
actor = _actors[i];
@@ -458,7 +454,7 @@ void Actor::loadList(int actorsEntrance, int actorCount, int actorsResourceID, i
}
}
- _centerActor = _protagonist = _actors[actorsEntrance];
+ _centerActor = _protagonist = _actors[protagonistIdx];
_protagState = 0;
if (protagStatesResourceID) {