[Scummvm-cvs-logs] CVS: scummvm/queen structs.h,1.25,1.26 logic.cpp,1.121,1.122 walk.cpp,1.29,1.30 xref.txt,1.43,1.44

Gregory Montoir cyx at users.sourceforge.net
Sat Dec 6 05:16:01 CET 2003


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

Modified Files:
	structs.h logic.cpp walk.cpp xref.txt 
Log Message:
- handle person bank number hack slighlty differently (fix it when loading, not in personSetData)
- remove some useless checks as there are no invalid bob numbers in actor data
- minor cleanups in Area


Index: structs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/structs.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- structs.h	30 Nov 2003 20:41:02 -0000	1.25
+++ structs.h	6 Dec 2003 13:15:17 -0000	1.26
@@ -88,8 +88,8 @@
 	}
 
 	uint16 calcScale(int16 y) const {
-		uint16 dy = box.y2 - box.y1;
-		int16 ds = (int16)(topScaleFactor - bottomScaleFactor);
+		uint16 dy = box.yDiff();
+		int16 ds = scaleDiff();
 		uint16 scale = 0;
 		
 		if (dy)	// Prevent division-by-zero
@@ -353,8 +353,13 @@
 		anim = READ_BE_UINT16(ptr); ptr += 2;
 		bankNum = READ_BE_UINT16(ptr); ptr += 2;
 		actorFile = READ_BE_UINT16(ptr); ptr += 2;
+		// Fix the actor data (see queen.c - l.1518-1519). When there is no 
+		// valid actor file, we must load the data from the objects room bank.
+		// This bank has number 15 (not 10 as in the data files).
+		if (actorFile == 0) {
+			bankNum = 15;
+		}
 	}
-
 };
 
 
@@ -430,12 +435,12 @@
 	//! area to turn off/on (<0: off, >0: on)
 	int16 area;
 	//! room in which the area must be changed
-	int16 room;
+	uint16 room;
 
 	void readFrom(byte *&ptr) {
 		id = (int16)READ_BE_UINT16(ptr); ptr += 2;
 		area = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		room = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		room = READ_BE_UINT16(ptr); ptr += 2;
 	}
 };
 
@@ -538,14 +543,13 @@
 
 struct Person {
 	//! actor settings to use
-	const ActorData *actor; // P_ROOM, P_BNUM, P_GAMES, P_VALUE, P_COLOR, P_STAND, P_X, P_Y
-	//! name of the actor
-	const char *name; // P_NAMEstr
-	//! string animation
-	const char *anim; // P_ANIMstr
-	uint16 bobFrame; // SFRAME
-	//! As the bank number may change, we can't re-use actor->bankNum
-	uint16 bankNum; // P_BANK
+	const ActorData *actor;
+	//! actor name
+	const char *name;
+	//! animation string
+	const char *anim;
+	//! current frame
+	uint16 bobFrame;
 };
 
 

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -d -r1.121 -r1.122
--- logic.cpp	5 Dec 2003 20:16:32 -0000	1.121
+++ logic.cpp	6 Dec 2003 13:15:17 -0000	1.122
@@ -1299,37 +1299,30 @@
 		}
 	}
 
-	if (!actor) {
-		warning("Actor '%s' not found, using default", actorName);
-		actor = 1;
-	}
-
-	pp->actor = &_actorData[actor];
-	pp->bankNum = pp->actor->bankNum;
-	pp->name = _aName[pp->actor->name];
-	if (pp->actor->anim != 0) {
-		pp->anim = _aAnim[pp->actor->anim];
-	}
-	else {
-		pp->anim = NULL;
-	}
+	if (actor != 0) {
 
-	if (loadBank) {
-		const char *actorFile = _aFile[pp->actor->actorFile];
-		if (actorFile) {
-			_graphics->bankLoad(actorFile, pp->bankNum);
+		pp->actor = &_actorData[actor];
+		pp->name = _aName[pp->actor->name];
+		if (pp->actor->anim != 0) {
+			pp->anim = _aAnim[pp->actor->anim];
 		}
 		else {
-			pp->bankNum = 15;
-		}		
-	}
+			pp->anim = NULL;
+		}
+
+		debug(0, "Logic::personSetData() - name=%s n=%d", pp->name, actor);
+
+		if (loadBank) {
+			const char *actorFile = _aFile[pp->actor->actorFile];
+			if (actorFile) {
+				_graphics->bankLoad(actorFile, pp->actor->bankNum);
+			}
+			// if actorFile is null, the person data is already loaded as
+			// it is contained in objects room bank (.bbk)
+		}
 
-	if (pp->actor->bobNum >= 1 && pp->actor->bobNum <= 3) {
 		pp->bobFrame = 29 + FRAMES_JOE_XTRA + pp->actor->bobNum;
 	}
-	else {
-		warning("Logic::personSetData() - The bob number for actor is not in the [1:3] range");
-	}
 }
 
 
@@ -1351,7 +1344,7 @@
 		return curImage;
 	}
 
-	_graphics->bankUnpack(pad->bobFrameStanding, p.bobFrame, p.bankNum);
+	_graphics->bankUnpack(pad->bobFrameStanding, p.bobFrame, p.actor->bankNum);
 	bool xflip = false;
 	uint16 person = _roomData[_currentRoom] + noun;
 	if (_objectData[person].image == -3) {
@@ -1480,7 +1473,7 @@
 	for (i = 1; i <= 255; ++i) {
 		if (allocatedFrames[i] != 0) {
 			++curImage;
-			_graphics->bankUnpack(i, curImage, person->bankNum);
+			_graphics->bankUnpack(i, curImage, person->actor->bankNum);
 		}
 	}
 

Index: walk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/walk.cpp,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- walk.cpp	4 Dec 2003 10:54:26 -0000	1.29
+++ walk.cpp	6 Dec 2003 13:15:17 -0000	1.30
@@ -361,7 +361,7 @@
 	initWalkData();
 
 	uint16 bobNum = pp->actor->bobNum;
-	uint16 bankNum = pp->bankNum;
+	uint16 bankNum = pp->actor->bankNum;
 
 	uint16 oldx = _graphics->bob(bobNum)->x;
 	uint16 oldy = _graphics->bob(bobNum)->y;
@@ -390,13 +390,8 @@
 		can = -1;
 	}
 
-	uint16 standingFrame = 0;
-	if (bobNum <= 3) {
-		standingFrame = 29 + FRAMES_JOE_XTRA + bobNum;
-	}
-	else {
-		warning("Walk::movePerson() - Wrong bob number : %d", bobNum);
-	}
+	uint16 standingFrame = 29 + FRAMES_JOE_XTRA + bobNum;
+
 	// make other person face the right direction
 	BobSlot *pbs = _graphics->bob(bobNum);
 	pbs->endx = endx;

Index: xref.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/xref.txt,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- xref.txt	5 Dec 2003 20:16:32 -0000	1.43
+++ xref.txt	6 Dec 2003 13:15:17 -0000	1.44
@@ -281,11 +281,11 @@
 PERSON_FACE_MAX
 PERSON_FRAMES				Logic::_personFrames
 P_ANIMstr					Person.anim
-P_BANK						Person.bankNum
 P_NAMEstr					Person.name
 P_STAND,P_BNUM,P_ROOM		Person.actor->*
-P_X,P_Y,P_COLOR				Person.actor->*
+P_BANK,P_X,P_Y,P_COLOR		Person.actor->*
 P_VALUE,P_GAMES				Person.actor->*
+SFRAME						Person.bobFrame
 
 
 RESOURCE





More information about the Scummvm-git-logs mailing list