diff options
Diffstat (limited to 'engines/saga/actor.cpp')
-rw-r--r-- | engines/saga/actor.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/engines/saga/actor.cpp b/engines/saga/actor.cpp index 70ca8b5fef..0dfe2294b5 100644 --- a/engines/saga/actor.cpp +++ b/engines/saga/actor.cpp @@ -48,8 +48,8 @@ ActorData::ActorData() { ActorData::~ActorData() { if (!_shareFrames) free(_frames); - freeSpriteList(); } + void ActorData::saveState(Common::OutSaveFile *out) { uint i = 0; CommonObjectData::saveState(out); @@ -151,10 +151,6 @@ void ActorData::addWalkStepPoint(const Point &point) { _walkStepsPoints[_walkStepsCount++] = point; } -void ActorData::freeSpriteList() { - _spriteList.freeMem(); -} - static int commonObjectCompare(const CommonObjectDataPointer& obj1, const CommonObjectDataPointer& obj2) { int p1 = obj1->_location.y - obj1->_location.z; int p2 = obj2->_location.y - obj2->_location.z; @@ -393,13 +389,15 @@ void Actor::freeActorList() { } void Actor::loadActorSpriteList(ActorData *actor) { - int lastFrame = 0; + uint lastFrame = 0; + uint curFrameIndex; int resourceId = actor->_spriteListResourceId; for (int i = 0; i < actor->_framesCount; i++) { for (int orient = 0; orient < ACTOR_DIRECTIONS_COUNT; orient++) { - if (actor->_frames[i].directions[orient].frameIndex > lastFrame) { - lastFrame = actor->_frames[i].directions[orient].frameIndex; + curFrameIndex = actor->_frames[i].directions[orient].frameIndex; + if (curFrameIndex > lastFrame) { + lastFrame = curFrameIndex; } } } @@ -410,7 +408,7 @@ void Actor::loadActorSpriteList(ActorData *actor) { if (_vm->getGameId() == GID_ITE) { if (actor->_flags & kExtended) { - while ((lastFrame >= actor->_spriteList.spriteCount)) { + while ((lastFrame >= actor->_spriteList.size())) { resourceId++; debug(9, "Appending to actor sprite list %d", resourceId); _vm->_sprite->loadList(resourceId, actor->_spriteList); @@ -1126,19 +1124,20 @@ bool Actor::getSpriteParams(CommonObjectData *commonObjectData, int &frameNumber ActorData *actor = (ActorData *)commonObjectData; spriteList = &(actor->_spriteList); frameNumber = actor->_frameNumber; - if (spriteList->infoList == NULL) + if (spriteList->empty()) { loadActorSpriteList(actor); + } } else if (validObjId(commonObjectData->_id)) { spriteList = &_vm->_sprite->_mainSprites; frameNumber = commonObjectData->_spriteListResourceId; } - if (spriteList->spriteCount == 0) { + if (spriteList->empty()) { return false; } - if ((frameNumber < 0) || (spriteList->spriteCount <= frameNumber)) { + if ((frameNumber < 0) || (spriteList->size() <= uint(frameNumber))) { debug(1, "Actor::getSpriteParams frameNumber invalid for %s id 0x%X (%d)", validObjId(commonObjectData->_id) ? "object" : "actor", commonObjectData->_id, frameNumber); |