[Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.139,1.140 actor.h,1.77,1.78 isomap.cpp,1.49,1.50

Andrew Kurushin h00ligan at users.sourceforge.net
Sun Jun 12 09:00:52 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14052

Modified Files:
	actor.cpp actor.h isomap.cpp 
Log Message:
fix Hooneyfoot bug

Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.cpp,v
retrieving revision 1.139
retrieving revision 1.140
diff -u -d -r1.139 -r1.140
--- actor.cpp	10 Jun 2005 12:09:01 -0000	1.139
+++ actor.cpp	12 Jun 2005 15:58:35 -0000	1.140
@@ -461,7 +461,7 @@
 void Actor::actorFaceTowardsPoint(uint16 actorId, const Location &toLocation) {
 	ActorData *actor;
 	Location delta;
-	debug (8, "Actor::actorFaceTowardsPoint actorId=%i", actorId);
+	//debug (8, "Actor::actorFaceTowardsPoint actorId=%i", actorId);
 	actor = getActor(actorId);
 	
 	toLocation.delta(actor->location, delta);
@@ -576,7 +576,11 @@
 	_protagonist = NULL;
 
 	for (i = 0; i < _actorsCount; i++) {
-		actor = _actors[i];		
+		actor = _actors[i];
+		actor->inScene = false;
+		if (actor->disabled) {
+			continue;
+		}
 		if ((actor->flags & (kProtagonist | kFollower)) || (i == 0)) {
 
 			if (actor->flags & kProtagonist) {
@@ -591,6 +595,7 @@
 			actor->sceneNumber = _vm->_scene->currentSceneNumber();
 		}
 		if (actor->sceneNumber == _vm->_scene->currentSceneNumber()) {
+			actor->inScene = true;
 			actor->actionCycle = (_vm->_rnd.getRandomNumber(7) & 0x7) * 4; // 1/8th chance
 		}
 	}
@@ -813,10 +818,7 @@
 
 	for (i = 0; i < _actorsCount; i++) {
 		actor = _actors[i];
-		if (actor->disabled)
-			continue;
-
-		if (actor->sceneNumber != _vm->_scene->currentSceneNumber())
+		if (!actor->inScene)
 			continue;
 		
 		//todo: dragon stuff
@@ -1255,13 +1257,11 @@
 	_drawOrderList.clear();
 	for (i = 0; i < _actorsCount; i++) {
 		actor = _actors[i];
-		if (actor->disabled)
+		if (!actor->inScene)
 			continue;
 
-		if (i == 0 || actor->flags & (kFollower | kProtagonist) || actor->sceneNumber == _vm->_scene->currentSceneNumber()) {
-			_drawOrderList.pushBack(actor, compareFunction);
-			calcScreenPosition(actor);
-		}
+		_drawOrderList.pushBack(actor, compareFunction);
+		calcScreenPosition(actor);
 	}
 
 	for (i = 0; i < _objsCount; i++) {
@@ -1649,8 +1649,7 @@
 
 				for (i = 0; (i < _actorsCount) && (_barrierCount < ACTOR_BARRIERS_MAX); i++) {
 					anotherActor = _actors[i];
-					if (anotherActor->disabled) continue;
-					if (anotherActor->sceneNumber != _vm->_scene->currentSceneNumber()) continue;
+					if (!anotherActor->inScene) continue;
 					if (anotherActor == actor ) continue;
 
 

Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.h,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -d -r1.77 -r1.78
--- actor.h	5 Jun 2005 16:53:53 -0000	1.77
+++ actor.h	12 Jun 2005 15:58:37 -0000	1.78
@@ -274,7 +274,9 @@
 	int frameListResourceId;	// Actor's frame list resource id
 
 	byte speechColor;			// Actor dialogue color
-	
+	//
+	bool inScene;
+
 	//variables
 	uint16 actorFlags;			// dynamic flags
 	int32 currentAction;			// ActorActions type

Index: isomap.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/isomap.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- isomap.cpp	10 Jun 2005 12:09:01 -0000	1.49
+++ isomap.cpp	12 Jun 2005 15:58:37 -0000	1.50
@@ -1151,8 +1151,7 @@
 
 	for (i = 0; i < _vm->_actor->_actorsCount; i++) {
 		actor = _vm->_actor->_actors[i];
-		if (actor->disabled) continue;
-		if (actor->sceneNumber != _vm->_scene->currentSceneNumber()) continue;
+		if (!actor->inScene) continue;
 
 		u = (actor->location.u() >> 4) - uBase;
 		v = (actor->location.v() >> 4) - vBase;
@@ -1255,8 +1254,7 @@
 		(_vm->_scene->currentSceneResourceId() != RID_ITE_OVERMAP_SCENE)) {
 			for (i = 0; i < _vm->_actor->_actorsCount; i++) {
 				other = _vm->_actor->_actors[i];
-				if (other->disabled) continue;
-				if (other->sceneNumber != _vm->_scene->currentSceneNumber()) continue;
+				if (!other->inScene) continue;
 				if (other==actor) continue;
 
 				u = (other->location.u() >> 4) - uBase;





More information about the Scummvm-git-logs mailing list