diff options
-rw-r--r-- | engines/draci/game.cpp | 15 | ||||
-rw-r--r-- | engines/draci/game.h | 1 | ||||
-rw-r--r-- | engines/draci/script.cpp | 18 |
3 files changed, 12 insertions, 22 deletions
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp index 52ba2db930..97a9f6b5bc 100644 --- a/engines/draci/game.cpp +++ b/engines/draci/game.cpp @@ -952,10 +952,7 @@ void Game::walkHero(int x, int y) { _hero = _currentRoom._walkingMap.findNearestWalkable(x, y, surface->getRect()); GameObject *dragon = getObject(kDragonObject); - - for (uint i = 0; i < dragon->_anim.size(); ++i) { - _vm->_anims->stop(dragon->_anim[i]); - } + stopObjectAnimations(dragon); debugC(3, kDraciLogicDebugLevel, "Walk to x: %d y: %d", _hero.x, _hero.y); @@ -1297,9 +1294,7 @@ void Game::enterNewRoom(bool force_reload) { // TODO: Make objects capable of stopping their own animations const GameObject *dragon = getObject(kDragonObject); - for (uint i = 0; i < dragon->_anim.size(); ++i) { - _vm->_anims->stop(dragon->_anim[i]); - } + stopObjectAnimations(dragon); // Remember the previous room for returning back from the map. rememberRoomNumAsPrevious(); @@ -1530,6 +1525,12 @@ void Game::deleteAnimationsAfterIndex(int lastAnimIndex) { _vm->_anims->deleteAfterIndex(lastAnimIndex); } +void Game::stopObjectAnimations(const GameObject *obj) { + for (uint i = 0; i < obj->_anim.size(); ++i) { + _vm->_anims->stop(obj->_anim[i]); + } +} + /** * See Game::getMarkedAnimationIndex(). */ diff --git a/engines/draci/game.h b/engines/draci/game.h index 8d8c9642f5..1b661e412a 100644 --- a/engines/draci/game.h +++ b/engines/draci/game.h @@ -271,6 +271,7 @@ public: int getObjectWithAnimation(int animID) const; void deleteObjectAnimations(); void deleteAnimationsAfterIndex(int lastAnimIndex); + void stopObjectAnimations(const GameObject *obj); int getVariable(int varNum) const; void setVariable(int varNum, int value); diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp index e337920b17..12976c268b 100644 --- a/engines/draci/script.cpp +++ b/engines/draci/script.cpp @@ -411,12 +411,7 @@ void Script::start(Common::Queue<int> ¶ms) { int animID = params.pop() - 1; GameObject *obj = _vm->_game->getObject(objID); - - // Stop all animation that the object owns - - for (uint i = 0; i < obj->_anim.size(); ++i) { - _vm->_anims->stop(obj->_anim[i]); - } + _vm->_game->stopObjectAnimations(obj); Animation *anim = _vm->_anims->getAnimation(animID); if (!anim) { @@ -463,12 +458,7 @@ void Script::startPlay(Common::Queue<int> ¶ms) { int animID = params.pop() - 1; GameObject *obj = _vm->_game->getObject(objID); - - // Stop all animation that the object owns - - for (uint i = 0; i < obj->_anim.size(); ++i) { - _vm->_anims->stop(obj->_anim[i]); - } + _vm->_game->stopObjectAnimations(obj); Animation *anim = _vm->_anims->getAnimation(animID); if (!anim) { @@ -599,9 +589,7 @@ void Script::objStat(Common::Queue<int> ¶ms) { obj->_location = -1; } - for (uint i = 0; i < obj->_anim.size(); ++i) { - _vm->_anims->stop(obj->_anim[i]); - } + _vm->_game->stopObjectAnimations(obj); } void Script::execInit(Common::Queue<int> ¶ms) { |