aboutsummaryrefslogtreecommitdiff
path: root/queen
diff options
context:
space:
mode:
Diffstat (limited to 'queen')
-rw-r--r--queen/cutaway.cpp33
-rw-r--r--queen/cutaway.h3
2 files changed, 29 insertions, 7 deletions
diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp
index d7f8552682..bd319c9b73 100644
--- a/queen/cutaway.cpp
+++ b/queen/cutaway.cpp
@@ -97,9 +97,8 @@ void Cutaway::load(const char *filename) {
strcpy(_basename, filename);
_basename[strlen(_basename)-4] = '\0';
- int COMPANEL = READ_BE_UINT16(ptr);
+ _comPanel = READ_BE_UINT16(ptr);
ptr += 2;
- debug(0, "COMPANEL = %i", COMPANEL);
_cutawayObjectCount = READ_BE_UINT16(ptr);
ptr += 2;
@@ -334,6 +333,10 @@ void Cutaway::restorePersonData() {
void Cutaway::changeRooms(CutawayObject &object) {
// Lines 1291-1385 in cutaway.c
+ debug(0, "Changing from room %i to room %i",
+ _temporaryRoom,
+ object.room);
+
restorePersonData();
_personDataCount = 0;
@@ -352,7 +355,7 @@ void Cutaway::changeRooms(CutawayObject &object) {
_personData[_personDataCount].image = objectData->image;
_personDataCount++;
- // Now, check to see if(we need to keep the person on
+ // Now, check to see if we need to keep the person on
bool on = false;
for (int j = 0; j < object.personCount; j++) {
if (object.person[j] == i) {
@@ -361,6 +364,11 @@ void Cutaway::changeRooms(CutawayObject &object) {
}
}
+ debug(0, "Person '%s' (%i) is %s",
+ _logic->objectName(objectData->name),
+ objectData->name,
+ on ? "on" : "off");
+
if (on) {
// It is needed, so ensure it's ON
objectData->name = abs(objectData->name);
@@ -401,7 +409,7 @@ void Cutaway::changeRooms(CutawayObject &object) {
mode = RDM_FADE_JOE_XY;
}
- _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), mode, 0, 0 /*COMPANEL*/, true);
+ _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), mode, 0, _comPanel, true);
// XXX CI=FRAMES;
@@ -448,7 +456,9 @@ Cutaway::ObjectType Cutaway::getObjectType(CutawayObject &object) {
ObjectData *objectData = _logic->objectData(object.objectNumber);
objectData->name = abs(objectData->name);
}
+
// XXX REDISP_OBJECT(OBJECT);
+ debug(0, "REDISP_OBJECT needed for object %i", object.objectNumber);
// Skip doing any anim stuff
objectType = OBJECT_TYPE_NO_ANIMATION;
@@ -629,22 +639,29 @@ void Cutaway::handlePersonRecord(
Person p;
_logic->personSetData(
object.objectNumber - _logic->roomData(object.room),
- "", false, &p);
+ "", true, &p);
+
+ debug(0, "Moving person '%s' (%i) = actor '%s' to (%i,%i)",
+ _logic->objectName(object.objectNumber),
+ object.objectNumber,
+ p.name, object.moveToX, object.moveToY);
strcpy(name, p.name);
if (object.moveToX || object.moveToY) {
BobSlot *bob = _graphics->bob(p.actor->bobNum);
- // XXX bob->scale = SF;
+ bob->scale = 100; // XXX SF;
bob->x = object.moveToX;
bob->y = object.moveToY;
}
+#if 0
_walk->personMove(
&p,
object.moveToX, object.moveToY,
_logic->numFrames() + 1, // XXX CI+1
_logic->objectData(object.objectNumber)->image
);
+#endif
}
if (_quit)
@@ -897,7 +914,7 @@ void Cutaway::goToFinalRoom() {
_logic->joeY(joeX);
_logic->currentRoom(joeRoom);
_logic->oldRoom(_initialRoom);
- _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE_XY, 0, 0 /*COMPANEL*/, true);
+ _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE_XY, 0, _comPanel, true);
}
if (_quit) {
@@ -988,12 +1005,14 @@ void Cutaway::updateGameState() {
if (fromObject > 0)
objectCopy(fromObject, objectIndex);
// XXX REDISP_OBJECT(objectIndex);
+ debug(0, "REDISP_OBJECT needed for object %i", objectIndex);
}
else if (objectIndex < 0) { // Hide the object
objectIndex = -objectIndex;
ObjectData *objectData = _logic->objectData(objectIndex);
objectData->name = -abs(objectData->name);
// XXX REDISP_OBJECT(objectIndex);
+ debug(0, "REDISP_OBJECT needed for object %i", objectIndex);
}
if (areaIndex > 0) {
diff --git a/queen/cutaway.h b/queen/cutaway.h
index 8fc373fd25..8a4f81ee2e 100644
--- a/queen/cutaway.h
+++ b/queen/cutaway.h
@@ -137,6 +137,9 @@ class Cutaway {
//! Raw .cut file data (without 20 byte header)
byte *_fileData;
+ //! COMPANEL
+ int16 _comPanel;
+
//! Game state data inside of _fileDat
byte *_gameStatePtr;