[Scummvm-cvs-logs] SF.net SVN: scummvm:[44961] scummvm/trunk/engines/draci

spalek at users.sourceforge.net spalek at users.sourceforge.net
Mon Oct 12 02:15:36 CEST 2009


Revision: 44961
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44961&view=rev
Author:   spalek
Date:     2009-10-12 00:15:34 +0000 (Mon, 12 Oct 2009)

Log Message:
-----------
Reduced huge code duplication by introducing Game::stopObjectAnimations()

Modified Paths:
--------------
    scummvm/trunk/engines/draci/game.cpp
    scummvm/trunk/engines/draci/game.h
    scummvm/trunk/engines/draci/script.cpp

Modified: scummvm/trunk/engines/draci/game.cpp
===================================================================
--- scummvm/trunk/engines/draci/game.cpp	2009-10-12 00:01:39 UTC (rev 44960)
+++ scummvm/trunk/engines/draci/game.cpp	2009-10-12 00:15:34 UTC (rev 44961)
@@ -952,11 +952,8 @@
 	_hero = _currentRoom._walkingMap.findNearestWalkable(x, y, surface->getRect());
 
 	GameObject *dragon = getObject(kDragonObject);
+	stopObjectAnimations(dragon);
 
-	for (uint i = 0; i < dragon->_anim.size(); ++i) {
-		_vm->_anims->stop(dragon->_anim[i]);
-	}
-
 	debugC(3, kDraciLogicDebugLevel, "Walk to x: %d y: %d", _hero.x, _hero.y);
 
 	// Fetch dragon's animation ID
@@ -1297,9 +1294,7 @@
 
 	// 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 @@
 	_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().
  */

Modified: scummvm/trunk/engines/draci/game.h
===================================================================
--- scummvm/trunk/engines/draci/game.h	2009-10-12 00:01:39 UTC (rev 44960)
+++ scummvm/trunk/engines/draci/game.h	2009-10-12 00:15:34 UTC (rev 44961)
@@ -271,6 +271,7 @@
 	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);

Modified: scummvm/trunk/engines/draci/script.cpp
===================================================================
--- scummvm/trunk/engines/draci/script.cpp	2009-10-12 00:01:39 UTC (rev 44960)
+++ scummvm/trunk/engines/draci/script.cpp	2009-10-12 00:15:34 UTC (rev 44961)
@@ -411,13 +411,8 @@
 	int animID = params.pop() - 1;
 
 	GameObject *obj = _vm->_game->getObject(objID);
+	_vm->_game->stopObjectAnimations(obj);
 
-	// Stop all animation that the object owns
-
-	for (uint i = 0; i < obj->_anim.size(); ++i) {
-		_vm->_anims->stop(obj->_anim[i]);
-	}
-
 	Animation *anim = _vm->_anims->getAnimation(animID);
 	if (!anim) {
 		// The original game files seem to contain errors, which I have
@@ -463,13 +458,8 @@
 	int animID = params.pop() - 1;
 
 	GameObject *obj = _vm->_game->getObject(objID);
+	_vm->_game->stopObjectAnimations(obj);
 
-	// Stop all animation that the object owns
-
-	for (uint i = 0; i < obj->_anim.size(); ++i) {
-		_vm->_anims->stop(obj->_anim[i]);
-	}
-
 	Animation *anim = _vm->_anims->getAnimation(animID);
 	if (!anim) {
 		anim = loadObjectAnimation(obj, animID);
@@ -599,9 +589,7 @@
 		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) {


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