[Scummvm-cvs-logs] CVS: scummvm/scumm sprite_he.cpp,1.107,1.108

kirben kirben at users.sourceforge.net
Tue Mar 29 01:25:15 CEST 2005


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

Modified Files:
	sprite_he.cpp 
Log Message:

Should continue the main loop, not inner loop.
Fixes using sprites in circdemo


Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -d -r1.107 -r1.108
--- sprite_he.cpp	28 Mar 2005 11:38:04 -0000	1.107
+++ sprite_he.cpp	29 Mar 2005 09:24:41 -0000	1.108
@@ -38,9 +38,10 @@
 //
 // spriteInfoGet functions
 //
-int ScummEngine_v90he::findSpriteWithClassOf(int x_pos, int y_pos, int spriteGroupId, int d, int num, int *args) {
+int ScummEngine_v90he::findSpriteWithClassOf(int x_pos, int y_pos, int spriteGroupId, int type, int num, int *args) {
+	bool cond;
 	int code, classId, x, y;
-	debug(1, "findSprite: x %d, y %d, spriteGroup %d, d %d, num %d", x_pos, y_pos, spriteGroupId, d, num);
+	debug(1, "findSprite: x %d, y %d, spriteGroup %d, type %d, num %d", x_pos, y_pos, spriteGroupId, type, num);
 
 	for (int i = (_numSpritesToProcess - 1); i >= 0; i--) {
 		SpriteInfo *spi = _activeSpritesTable[i];
@@ -50,20 +51,23 @@
 		if (spriteGroupId && spi->group_num != spriteGroupId)
 			continue;
 
+		cond = true;
 		for (int j = 0; j < num; j++) {
 			code = classId = args[j];
 			classId &= 0x7F;
 			checkRange(32, 1, classId, "class %d out of range in statement");
 			if (code & 0x80) {
-				if (!(spi->class_flags & (1 << classId)))
-					continue;
+				if (!(spi->class_flags & (1 << (classId - 1))))
+					cond = 0;
 			} else {
-				if ((spi->class_flags & (1 << classId)))
-					continue;
+				if ((spi->class_flags & (1 << (classId - 1))))
+					cond = 0;
 			}
 		}
+		if (!cond)
+			continue;
 
-		if (d) {
+		if (type) {
 			if (spi->bbox.left > spi->bbox.right)
 				continue;
 			if (spi->bbox.top > spi->bbox.bottom)
@@ -152,10 +156,10 @@
 		classId &= 0x7F;
 		checkRange(32, 1, classId, "class %d out of range in statement");
 		if (code & 0x80) {
-			if (!(_spriteTable[spriteId].class_flags & (1 << classId)))
+			if (!(_spriteTable[spriteId].class_flags & (1 << (classId - 1))))
 				return 0;
 		} else {
-			if ((_spriteTable[spriteId].class_flags & (1 << classId)))
+			if ((_spriteTable[spriteId].class_flags & (1 << (classId - 1))))
 				return 0;
 		}
 	}
@@ -636,9 +640,9 @@
 	checkRange(32, 1, classId, "class %d out of range in statement");
 	
 	if (toggle) {
-		_spriteTable[spriteId].class_flags |= (1 << classId);
+		_spriteTable[spriteId].class_flags |= (1 << (classId - 1));
 	} else {
-		_spriteTable[spriteId].class_flags &= ~(1 << classId);
+		_spriteTable[spriteId].class_flags &= ~(1 << (classId - 1));
 	}
 }
 





More information about the Scummvm-git-logs mailing list