[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