[Scummvm-cvs-logs] CVS: scummvm/queen cutaway.cpp,1.24,1.25 display.cpp,1.2,1.3 logic.h,1.33,1.34 queen.cpp,1.10,1.11 queen.h,1.7,1.8 resource.cpp,1.14,1.15 structs.h,1.11,1.12 xref.txt,1.7,1.8
David Eriksson
twogood at users.sourceforge.net
Thu Oct 16 12:45:10 CEST 2003
Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv21678
Modified Files:
cutaway.cpp display.cpp logic.h queen.cpp queen.h resource.cpp
structs.h xref.txt
Log Message:
Play all intro cutaways (some better than others... :-)
Index: cutaway.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.cpp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- cutaway.cpp 15 Oct 2003 11:33:02 -0000 1.24
+++ cutaway.cpp 16 Oct 2003 19:40:28 -0000 1.25
@@ -187,7 +187,7 @@
ptr = Talk::getString(ptr, _bankNames[j], MAX_FILENAME_LENGTH);
if (_bankNames[j][0]) {
- debug(0, "Bank name %i = '%s'", _bankNames[j]);
+ debug(0, "Bank name %i = '%s'", j, _bankNames[j]);
j++;
}
}
@@ -244,10 +244,15 @@
const char *objectNumberStr;
switch (object.objectNumber) {
- case -1: objectNumberStr = "MESSAGE"; break;
- case 0: objectNumberStr = "Joe"; break;
- default:
- objectNumberStr = _logic->objectName(_logic->objectData(object.objectNumber)->name);
+ case -1:
+ objectNumberStr = "MESSAGE"; break;
+ case 0:
+ objectNumberStr = "Joe"; break;
+ default:
+ if (object.objectNumber > 0)
+ objectNumberStr = _logic->objectName(abs(_logic->objectData(object.objectNumber)->name));
+ else
+ objectNumberStr = "Unknown!";
break;
}
@@ -762,7 +767,7 @@
break;
default:
- error("Unhandled object type: %i", objectType);
+ warning("Unhandled object type: %i", objectType);
break;
}
Index: display.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/display.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- display.cpp 16 Oct 2003 18:57:56 -0000 1.2
+++ display.cpp 16 Oct 2003 19:40:28 -0000 1.3
@@ -145,11 +145,15 @@
// FIXME: are these tests really needed ?
if (roomNum < 90 || ((roomNum > 94) && (roomNum < 114))) {
char filename[20];
- sprintf(filename, "%s.msk", roomName);
- resource->loadFile(filename, 0, (uint8*)_dynalum.msk);
- sprintf(filename, "%s.lum", roomName);
- resource->loadFile(filename, 0, (uint8*)_dynalum.lum);
- }
+
+ sprintf(filename, "%s.msk", roomName);
+ if (resource->exists(filename))
+ resource->loadFile(filename, 0, (uint8*)_dynalum.msk);
+
+ sprintf(filename, "%s.lum", roomName);
+ if (resource->exists(filename))
+ resource->loadFile(filename, 0, (uint8*)_dynalum.lum);
+ }
}
Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- logic.h 16 Oct 2003 13:54:48 -0000 1.33
+++ logic.h 16 Oct 2003 19:40:28 -0000 1.34
@@ -57,7 +57,13 @@
uint16 currentRoom();
void currentRoom(uint16 room);
+
+ uint16 oldRoom() { return _oldRoom; }
void oldRoom(uint16 room);
+
+ uint16 newRoom() { return _newRoom; }
+ void newRoom(uint16 room) { _newRoom = room; }
+
ObjectData* objectData(int index);
uint16 roomData(int room);
uint16 objMax(int room);
Index: queen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- queen.cpp 16 Oct 2003 13:54:48 -0000 1.10
+++ queen.cpp 16 Oct 2003 19:40:28 -0000 1.11
@@ -21,6 +21,10 @@
#include "stdafx.h"
#include "queen/queen.h"
+#include "queen/cutaway.h"
+#include "queen/talk.h"
+#include "queen/walk.h"
+#include "queen/graphics.h"
#include "common/config-manager.h"
#include "common/file.h"
#include "base/gameDetector.h"
@@ -85,13 +89,97 @@
strcpy(buf2, buf1);
}
+void QueenEngine::roomChanged() {
+ // queen.c function SETUP_ROOM, lines 398-428
+
+ // This function uses lots of variables in logic, but we can't move it to
+ // logic because that would cause a circular dependency between Cutaway and
+ // Logic... :-(
+
+ if (_logic->currentRoom() == 7) {
+ warning("Room 7 not yet handled!");
+ // XXX R_MAP();
+ // XXX fadeout(0,223);
+ }
+ else if (_logic->currentRoom() == 95 && _logic->gameState(117) == 0) {
+ char nextFilename[20];
+
+ _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_NOJOE, 100, 2, true);
+
+ if (_resource->isDemo()) {
+ if (_resource->exists("pclogo.cut"))
+ Cutaway::run("pclogo.cut", nextFilename, _graphics, _logic, _resource);
+ else
+ Cutaway::run("clogo.cut", nextFilename, _graphics, _logic, _resource);
+ }
+ else {
+ Cutaway::run("copy.cut", nextFilename, _graphics, _logic, _resource);
+ Cutaway::run("clogo.cut", nextFilename, _graphics, _logic, _resource);
+
+ // TODO enable talking for talkie version
+
+ Cutaway::run("cdint.cut", nextFilename, _graphics, _logic, _resource);
+
+ // XXX _graphics->panelLoad();
+
+ Cutaway::run("cred.cut", nextFilename, _graphics, _logic, _resource);
+ }
+
+ _logic->currentRoom(73);
+ // XXX _entryObj = 584;
+
+ Cutaway::run("c70d.cut", nextFilename, _graphics, _logic, _resource);
+
+ _logic->gameState(117) == 1;
+
+ // XXX setupItems();
+ // XXX inventory();
+ }
+ else {
+ _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE, 100, 1, false);
+ }
+ // XXX _drawMouseFlag = 1;
+}
+
+
void QueenEngine::go() {
if (!_dump_file)
_dump_file = stdout;
initialise();
-
+
+ _logic->oldRoom(0);
+ _logic->newRoom(_logic->currentRoom());
+
+ for (;;) {
+ // queen.c lines 4080-4104
+ if (_logic->newRoom() > 0) {
+ _graphics->textClear(151, 151);
+ _graphics->update();
+ _logic->oldRoom(_logic->currentRoom());
+ _logic->currentRoom(_logic->newRoom());
+ roomChanged();
+ // XXX _logic->fullScreen(false);
+ if (_logic->currentRoom() == _logic->newRoom())
+ _logic->newRoom(0);
+ }
+ else {
+ if (_logic->joeWalk() == 2) {
+ _logic->joeWalk(0);
+ // XXX executeAction(yes);
+ }
+ else {
+ // XXX if (_parse == 1)
+ // XXX clearCommand(1);
+ _logic->joeWalk(0);
+ // XXX checkPlayer();
+ }
+ }
+
+ break; // XXX don't loop yet
+ }
+
while (1) { //main loop
delay(1000);
}
Index: queen.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- queen.h 16 Oct 2003 13:54:48 -0000 1.7
+++ queen.h 16 Oct 2003 19:40:29 -0000 1.8
@@ -68,6 +68,9 @@
void delay(uint amount);
void go();
+ //! Called when we go from one room to another
+ void roomChanged(); // SETUP_ROOM
+
void initialise();
static int CDECL game_thread_proc(void *param);
Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/resource.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- resource.cpp 14 Oct 2003 08:31:56 -0000 1.14
+++ resource.cpp 16 Oct 2003 19:40:29 -0000 1.15
@@ -117,7 +117,7 @@
high = cur;
}
- error("Couldn't find file '%s'", entryName);
+ warning("Couldn't find file '%s'", entryName);
return -1;
}
Index: structs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/structs.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- structs.h 15 Oct 2003 16:31:51 -0000 1.11
+++ structs.h 16 Oct 2003 19:40:29 -0000 1.12
@@ -74,10 +74,14 @@
uint16 calcScale(int16 y) const {
uint16 dy = box.y2 - box.y1;
int16 ds = (int16)(topScaleFactor - bottomScaleFactor);
- uint16 scale = ((((y - box.y1) * 100) / dy) * ds) / 100 + bottomScaleFactor;
- if (scale == 0) {
+ uint16 scale = 0;
+
+ if (dy) // Prevent division-by-zero
+ scale = ((((y - box.y1) * 100) / dy) * ds) / 100 + bottomScaleFactor;
+
+ if (scale == 0)
scale = 100;
- }
+
return scale;
}
Index: xref.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/xref.txt,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- xref.txt 16 Oct 2003 16:57:30 -0000 1.7
+++ xref.txt 16 Oct 2003 19:40:29 -0000 1.8
@@ -167,7 +167,7 @@
SETUP_BOBS() Graphics::bobSetupControl
SETUP_FURNITURE() Logic::roomSetupFurniture
SETUP_ITEMS()
-SETUP_ROOM()
+SETUP_ROOM() Logic::roomChanged
SETUP_SCRVARS()
update() Graphics::update
USE_UNDERWEAR()
More information about the Scummvm-git-logs
mailing list