[Scummvm-cvs-logs] CVS: scummvm/queen cutaway.cpp,1.30,1.31 cutaway.h,1.13,1.14 defs.h,1.8,1.9 xref.txt,1.10,1.11

David Eriksson twogood at users.sourceforge.net
Sat Oct 18 04:55:05 CEST 2003


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv29507

Modified Files:
	cutaway.cpp cutaway.h defs.h xref.txt 
Log Message:
- Fix some cutaway crashes
- Implement more cutaway animation


Index: cutaway.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- cutaway.cpp	18 Oct 2003 10:58:10 -0000	1.30
+++ cutaway.cpp	18 Oct 2003 11:46:51 -0000	1.31
@@ -538,7 +538,7 @@
 	else {
 		if (anim.bank != 13) {
 			/* XXX if (OLDBANK != T) */ {
-				_graphics->bankLoad(_bankNames[anim.bank], 8);
+				_graphics->bankLoad(_bankNames[anim.bank-1], 8);
 				// XXX OLDBANK=T;
 			}
 
@@ -678,6 +678,64 @@
 
 	if (object.animType != 1) {
 		// lines 1657-1761 in cutaway.c
+		for (i = 0; i < frameCount; i++) {
+			BobSlot *bob = _graphics->bob(objAnim[i].object);
+			bob->active = true;
+			if (bob->animating) {
+				bob->animating = false;
+				bob->frameNum = objAnim[i].originalFrame;
+			}
+
+			if (objAnim[i].object < 4)
+				bob->frameNum = 29 + bob->frameNum + FRAMES_JOE_XTRA;
+
+			if (objAnim[i].unpackFrame == 0) {
+				// Turn off the bob
+				bob->active = false;
+			}
+			else {
+				if (object.animType == 2 || object.animType == 0) {
+					// Unpack animation, but do not unpack moving people
+
+					if (!(objAnim[0].mx || objAnim[0].my) && InRange(objAnim[i].object, 0, 3))
+						_graphics->bankUnpack(
+								objAnim[i].unpackFrame, 
+								objAnim[i].originalFrame,
+								objAnim[i].bank);
+				}
+
+				if (objAnim[i].cx || objAnim[i].cy) {
+					bob->x = objAnim[i].cx;
+					bob->y = objAnim[i].cy;
+				}
+
+				// Only flip if we are not moving and it is not a person object
+				if (!(objAnim[i].mx || objAnim[i].my) &&
+						!(objAnim[i].object > 0 && objAnim[i].object < 4))
+					bob->xflip = objAnim[i].flip;
+
+				// Add frame alteration
+				bob->frameNum = objAnim[i].originalFrame;
+
+				int j;
+				for (j = 0; j < objAnim[i].speed; j++)
+					_graphics->update();
+			}
+
+			if (_quit)
+				return NULL;
+
+			if (objAnim[i].song > 0)
+				/* XXX playsong(objAnim[i].song) */ ;
+
+			// Load but don't play
+			if(objAnim[i].song < 0) {
+				// XXX loadnoplay=1;
+				// XXX playsong(abs(OBJ_ANIM[J][11]));
+				// XXX loadnoplay=0;
+			}
+
+		} // for()
 	}
 
 	bool moving = true;

Index: cutaway.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cutaway.h	18 Oct 2003 10:58:10 -0000	1.13
+++ cutaway.h	18 Oct 2003 11:46:51 -0000	1.14
@@ -105,18 +105,18 @@
 		};
 
 		struct CutawayAnim {
-			int object;
-			int unpackFrame;          // Frame to unpack
-			int speed;
-			int bank;
-			int mx;
-			int my;
-			int cx;
-			int cy;
-			int scale;
-			int currentFrame;  // Index to Current Frame
-			int originalFrame;  // Index to Original Object Frame
-			int song;
+			int16 object;
+			int16 unpackFrame;          // Frame to unpack
+			int16 speed;
+			int16 bank;
+			int16 mx;
+			int16 my;
+			int16 cx;
+			int16 cy;
+			int16 scale;
+			int16 currentFrame;  // Index to Current Frame
+			int16 originalFrame;  // Index to Original Object Frame
+			int16 song;
 			bool flip;		// set this if unpackFrame is negative
 		};
 

Index: defs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/defs.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- defs.h	18 Oct 2003 08:12:56 -0000	1.8
+++ defs.h	18 Oct 2003 11:46:52 -0000	1.9
@@ -24,6 +24,8 @@
 
 namespace Queen {
 
+// Maybe should be an inlined function somwhere else, feel free to change
+#define InRange(x,l,h)     ((x)<=(h) && (x)>=(l)) /* X in [l..h] */
 
 enum {
 	GAME_SCREEN_WIDTH  = 320,

Index: xref.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/xref.txt,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- xref.txt	18 Oct 2003 10:58:10 -0000	1.10
+++ xref.txt	18 Oct 2003 11:46:52 -0000	1.11
@@ -360,6 +360,7 @@
 
 (UNSORTED)
 ==========
+in()						defs.h InRange() macro
 game_save()
 game_load()
 R_MAP()





More information about the Scummvm-git-logs mailing list