aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorRobert Špalek2009-10-12 00:15:34 +0000
committerRobert Špalek2009-10-12 00:15:34 +0000
commit3ef5145b41852ce39494e353ee7c95600d49093e (patch)
tree71e08e53058ce57e9a586f948834c2bee4bc5c4f /engines
parent6aaf99ec6756c2ff4d661b88f0aad489784212ac (diff)
downloadscummvm-rg350-3ef5145b41852ce39494e353ee7c95600d49093e.tar.gz
scummvm-rg350-3ef5145b41852ce39494e353ee7c95600d49093e.tar.bz2
scummvm-rg350-3ef5145b41852ce39494e353ee7c95600d49093e.zip
Reduced huge code duplication by introducing Game::stopObjectAnimations()
svn-id: r44961
Diffstat (limited to 'engines')
-rw-r--r--engines/draci/game.cpp15
-rw-r--r--engines/draci/game.h1
-rw-r--r--engines/draci/script.cpp18
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> &params) {
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> &params) {
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> &params) {
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> &params) {