[Scummvm-cvs-logs] CVS: scummvm/queen cutaway.cpp,1.40,1.41 cutaway.h,1.17,1.18

David Eriksson twogood at users.sourceforge.net
Tue Oct 21 05:57:01 CEST 2003


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

Modified Files:
	cutaway.cpp cutaway.h 
Log Message:
- Better handling of complex animations
- Special action: scale title


Index: cutaway.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- cutaway.cpp	20 Oct 2003 13:08:59 -0000	1.40
+++ cutaway.cpp	21 Oct 2003 12:13:56 -0000	1.41
@@ -288,6 +288,24 @@
 
 	switch (index) {
 
+		// cred.cut - scale title
+		case 34:
+			{
+				BobSlot *bob = _graphics->bob(5);
+				bob->animating = false;
+				bob->x = 161;
+				bob->y = 200;
+				bob->scale = 100;
+
+				int i;
+				for (i = 5; i <= 100; i +=5) {
+					bob->scale = i;
+					bob->y -= 4;
+					_graphics->update();
+				}
+			}
+			break;
+
 		// cdint.cut - pan right fast
 		case 36:
 			{
@@ -666,11 +684,6 @@
 
 	//debug(0, "[Cutaway::getCutawayAnim] header=%i", header);
 
-	// XXX why is Joe flying???
-	if (_logic->currentRoom() == 112 && header == 0) {
-		warning("Hack to show airplane instead of Joe at last credit scene");
-		header = 763;
-	}
 
 	anim.currentFrame = 0;
 	anim.originalFrame = 0;
@@ -1389,43 +1402,49 @@
 	}
 }
 
-
 int Cutaway::makeComplexAnimation(int16 currentImage, Cutaway::CutawayAnim *objAnim, int frameCount) {
-	AnimFrame cutAnim[17][30];
-	bool hasFrame[256];
+	// function MAKE_COMPLEX_ANIM, lines 816-883 in cutaway.c
+	int frameIndex[256];
 	int i;
 	int bobNum = objAnim[0].object;
 
-	memset(hasFrame, 0, sizeof(hasFrame));
+	memset(frameIndex, 0, sizeof(frameIndex));
+	debug(0, "[Cutaway::makeComplexAnimation] currentImage = %i", currentImage);
 
 	BobSlot *bob = _graphics->bob(bobNum);
 	bob->xflip = objAnim[0].flip;
 
 	for (i = 0; i < frameCount; i++) {
-		cutAnim[bobNum][i].frame = currentImage + objAnim[i].unpackFrame;
-		cutAnim[bobNum][i].speed = objAnim[i].speed;
-		hasFrame[objAnim[i].unpackFrame] = true;
+		_cutAnim[bobNum][i].frame = objAnim[i].unpackFrame;
+		_cutAnim[bobNum][i].speed = objAnim[i].speed;
+		frameIndex[objAnim[i].unpackFrame] = 1;
 	}
 
-	cutAnim[bobNum][frameCount].frame = 0;	
-	cutAnim[bobNum][frameCount].speed = 0;
+	_cutAnim[bobNum][frameCount].frame = 0;	
+	_cutAnim[bobNum][frameCount].speed = 0;
 
-	int uniqueFrameCount = 0;
+	int nextFrameIndex = 1;
 
 	for (i = 1; i < 256; i++)
-		if (hasFrame[i])
-			uniqueFrameCount++;
+		if (frameIndex[i])
+			frameIndex[i] = nextFrameIndex++;
+
+	for (i = 0; i < frameCount; i++) {
+		_cutAnim[bobNum][i].frame = currentImage + frameIndex[objAnim[i].unpackFrame];
+		debug(0, "_cutAnim[%i][%i].frame = %i", bobNum, i, _cutAnim[bobNum][i].frame);
+	}
 
 	for (i = 1; i < 256; i++) {
-		if (hasFrame[i]) {
+		if (frameIndex[i]) {
 			currentImage++;
+			debug(0, "bankUnpack(%i, %i, %i)", i, currentImage, objAnim[0].bank);
 			_graphics->bankUnpack(i, currentImage, objAnim[0].bank);
 		}
 	}
 
-	_graphics->bobAnimString(bobNum, cutAnim[bobNum]);
+	_graphics->bobAnimString(bobNum, _cutAnim[bobNum]);
 
-	return currentImage + 1;
+	return currentImage;
 }
 
 void Cutaway::handleText(

Index: cutaway.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- cutaway.h	19 Oct 2003 11:41:24 -0000	1.17
+++ cutaway.h	21 Oct 2003 12:13:56 -0000	1.18
@@ -23,6 +23,7 @@
 #define QUEENCUTAWAY_H
 
 #include "queen/queen.h"
+#include "queen/graphics.h"
 
 namespace Queen {
 
@@ -31,6 +32,7 @@
 class Resource;
 class Walk;
 
+
 class Cutaway {
 	public:
 		//! Public interface to run a cutaway from a file
@@ -204,6 +206,7 @@
 
 		int16 _currentImage;
 
+		AnimFrame _cutAnim[17][30];
 
 		Cutaway(
 				const char *filename, 





More information about the Scummvm-git-logs mailing list