[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