[Scummvm-cvs-logs] CVS: scummvm/queen command.cpp,1.49,1.50 cutaway.cpp,1.95,1.96 logic.cpp,1.149,1.150 logic.h,1.96,1.97 resource.cpp,1.35,1.36 resource.h,1.26,1.27 talk.cpp,1.64,1.65

Gregory Montoir cyx at users.sourceforge.net
Tue Dec 30 13:07:06 CET 2003


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

Modified Files:
	command.cpp cutaway.cpp logic.cpp logic.h resource.cpp 
	resource.h talk.cpp 
Log Message:
interview mini-game support

Index: command.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/command.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- command.cpp	29 Dec 2003 21:05:33 -0000	1.49
+++ command.cpp	30 Dec 2003 21:06:22 -0000	1.50
@@ -267,30 +267,46 @@
 	
 	_numCmdArea = READ_BE_UINT16(ptr); ptr += 2;
 	_cmdArea = new CmdArea[_numCmdArea + 1];
-	memset(&_cmdArea[0], 0, sizeof(CmdArea));
-	for (i = 1; i <= _numCmdArea; i++) {
-		_cmdArea[i].readFromBE(ptr);
+	if (_numCmdArea == 0) {
+		_cmdArea[0].readFromBE(ptr);
+	} else {
+		memset(&_cmdArea[0], 0, sizeof(CmdArea));
+		for (i = 1; i <= _numCmdArea; i++) {
+			_cmdArea[i].readFromBE(ptr);
+		}
 	}
 
 	_numCmdObject = READ_BE_UINT16(ptr); ptr += 2;
 	_cmdObject = new CmdObject[_numCmdObject + 1];
-	memset(&_cmdObject[0], 0, sizeof(CmdObject));
-	for (i = 1; i <= _numCmdObject; i++) {
-		_cmdObject[i].readFromBE(ptr);
+	if (_numCmdObject == 0) {
+		_cmdObject[0].readFromBE(ptr);
+	} else {
+		memset(&_cmdObject[0], 0, sizeof(CmdObject));
+		for (i = 1; i <= _numCmdObject; i++) {
+			_cmdObject[i].readFromBE(ptr);
+		}
 	}
 
 	_numCmdInventory = READ_BE_UINT16(ptr);	ptr += 2;
 	_cmdInventory = new CmdInventory[_numCmdInventory + 1];
-	memset(&_cmdInventory[0], 0, sizeof(CmdInventory));
-	for (i = 1; i <= _numCmdInventory; i++) {
-		_cmdInventory[i].readFromBE(ptr);
+	if (_numCmdInventory == 0) {
+		_cmdInventory[0].readFromBE(ptr);
+	} else {
+		memset(&_cmdInventory[0], 0, sizeof(CmdInventory));
+		for (i = 1; i <= _numCmdInventory; i++) {
+			_cmdInventory[i].readFromBE(ptr);
+		}
 	}
 
 	_numCmdGameState = READ_BE_UINT16(ptr);	ptr += 2;
 	_cmdGameState = new CmdGameState[_numCmdGameState + 1];
-	memset(&_cmdGameState[0], 0, sizeof(CmdGameState));
-	for (i = 1; i <= _numCmdGameState; i++) {
-		_cmdGameState[i].readFromBE(ptr);
+	if (_numCmdGameState == 0) {
+		_cmdGameState[0].readFromBE(ptr);
+	} else {
+		memset(&_cmdGameState[0], 0, sizeof(CmdGameState));
+		for (i = 1; i <= _numCmdGameState; i++) {
+			_cmdGameState[i].readFromBE(ptr);
+		}
 	}
 }
 

Index: cutaway.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.cpp,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- cutaway.cpp	30 Dec 2003 10:46:04 -0000	1.95
+++ cutaway.cpp	30 Dec 2003 21:06:22 -0000	1.96
@@ -1043,6 +1043,11 @@
 
 	joeBob->animating = 0;
 	joeBob->moving    = 0;
+	if (_vm->resource()->isInterview()) {
+		_vm->graphics()->bob(20)->box.y2 = 149;
+		_vm->graphics()->bob(21)->box.y2 = 149;
+		_vm->graphics()->bob(22)->box.y2 = 149;
+	}
 	// Make sure Joe is clipped!
 	joeBob->box.y2    = 149;
 

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.149
retrieving revision 1.150
diff -u -d -r1.149 -r1.150
--- logic.cpp	30 Dec 2003 10:46:04 -0000	1.149
+++ logic.cpp	30 Dec 2003 21:06:22 -0000	1.150
@@ -188,11 +188,15 @@
 	}
 
 	_numGraphicAnim = READ_BE_UINT16(ptr); ptr += 2;
-	
+
 	_graphicAnim = new GraphicAnim[_numGraphicAnim + 1];
-	memset(&_graphicAnim[0], 0, sizeof(GraphicAnim));
-	for (i = 1; i <= _numGraphicAnim; i++) {
-		_graphicAnim[i].readFromBE(ptr);
+	if (_numGraphicAnim == 0) {
+		_graphicAnim[0].readFromBE(ptr);
+	} else {
+		memset(&_graphicAnim[0], 0, sizeof(GraphicAnim));
+		for (i = 1; i <= _numGraphicAnim; i++) {
+			_graphicAnim[i].readFromBE(ptr);
+		}
 	}
 
 	_currentRoom = _objectData[_entryObj].room;
@@ -1674,10 +1678,17 @@
 
 void Logic::inventorySetup() {
 	_vm->graphics()->bankLoad("objects.BBK", 14);
-	_inventoryItem[0] = ITEM_BAT;
-	_inventoryItem[1] = ITEM_JOURNAL;
-	_inventoryItem[2] = ITEM_NONE;
-	_inventoryItem[3] = ITEM_NONE;
+	if (_vm->resource()->isInterview()) {
+		_inventoryItem[0] = 1;
+		_inventoryItem[1] = 2;
+		_inventoryItem[2] = 3;
+		_inventoryItem[3] = 4;
+	} else {
+		_inventoryItem[0] = ITEM_BAT;
+		_inventoryItem[1] = ITEM_JOURNAL;
+		_inventoryItem[2] = ITEM_NONE;
+		_inventoryItem[3] = ITEM_NONE;
+	}
 }
 
 void Logic::inventoryRefresh() {
@@ -2079,7 +2090,9 @@
 
 	_vm->input()->delay();
 
-	_vm->display()->palCustomScroll(_currentRoom);
+	if (!_vm->resource()->isInterview()) {
+		_vm->display()->palCustomScroll(_currentRoom);
+	}
 	if (_vm->debugger()->_drawAreas) {
 		for(int i = 1; i < MAX_ZONES_NUMBER; ++i) {
 			const ZoneSlot *pzs = &_zones[ZONE_ROOM][i];
@@ -2312,7 +2325,7 @@
 void Logic::useJournal() {
 	if (_vm->resource()->isDemo()) {
 		makePersonSpeak("This is a demo, so I can't load or save games*14", NULL, "");
-	} else {
+	} else if (!_vm->resource()->isInterview()) {
 		_vm->command()->clear(false);
 		Journal j(_vm);
 		j.use();
@@ -2398,7 +2411,15 @@
 
 
 bool Logic::preChangeRoom_Interview() {
-	// XXX
+	if (currentRoom() == 2 && gameState(2) == 0) {
+		currentRoom(6);
+		roomDisplay(currentRoom(), RDM_FADE_NOJOE, 100, 2, true);
+		playCutaway("start.cut");
+		gameState(2, 1);
+		inventorySetup();
+		inventoryRefresh();
+		return true;
+	}
 	return false;
 }
 
@@ -2456,8 +2477,17 @@
 
 
 bool Logic::executeSpecialMove_Interview(uint16 sm) {
-	// XXX
-	return false;
+	switch (sm) {
+	case 1:
+		asmInterviewIntro();
+		break;
+	case 2:
+		asmEndInterview();
+		break;
+	default:
+		return false;
+	}
+	return true;
 }
 
 
@@ -3092,8 +3122,56 @@
 
 void Logic::asmEndDemo() {
 	debug(0, "Flight of the Amazon Queen, released January 95");
-	OSystem::instance()->quit();	
+	OSystem::instance()->quit();
 }
+
+
+void Logic::asmInterviewIntro() {
+	// put camera on zeppelin
+	_vm->graphics()->cameraBob(5);
+	BobSlot *bzep = _vm->graphics()->bob(5);
+
+	bzep->curPos(-30, 40);
+
+	bzep->move(700, 10, 3);
+	int scale = 450;
+	while (bzep->moving && !_vm->input()->cutawayQuit()) {
+		bzep->scale = 256 * 100 / scale;
+		--scale;
+		if (scale < 256) {
+			scale = 256;
+		}
+		update();
+	}
+
+	bzep->scale = 90;
+	bzep->xflip = true;
+
+	bzep->move(560, 25, 4);
+	while (bzep->moving && !_vm->input()->cutawayQuit()) {
+		update();
+	}
+
+	bzep->move(545, 65, 2);
+	while (bzep->moving && !_vm->input()->cutawayQuit()) {
+		update();
+	}
+
+	bzep->move(540, 75, 2);
+	while (bzep->moving && !_vm->input()->cutawayQuit()) {
+		update();
+	}
+
+	// put camera on Joe
+	_vm->graphics()->cameraBob(0);
+}
+
+
+void Logic::asmEndInterview() {
+	debug(0, "Interactive Interview copyright (c) 1995, IBI.");
+	OSystem::instance()->quit();
+}
+
 
 
 } // End of namespace Queen

Index: logic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.h,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -d -r1.96 -r1.97
--- logic.h	30 Dec 2003 10:46:05 -0000	1.96
+++ logic.h	30 Dec 2003 21:06:22 -0000	1.97
@@ -293,6 +293,8 @@
 	void asmPanRightToJoeAndRita();
 	void asmPanLeftToBomb();
 	void asmEndDemo();
+	void asmInterviewIntro();
+	void asmEndInterview();
 
 	typedef bool (Logic::*ExecuteSpecialMoveProc)(uint16);
 	typedef bool (Logic::*PreChangeRoomProc)();

Index: resource.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/resource.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- resource.cpp	29 Dec 2003 13:18:23 -0000	1.35
+++ resource.cpp	30 Dec 2003 21:06:22 -0000	1.36
@@ -38,7 +38,8 @@
 	{ "CIM10", 0x0008BEE2, 190795582 },
 	{ "CSM10", 0x000B343C, 190730602 },
 	{ "PE100", 0x000DA981,   3724538 },
-	{ "PE100", 0x000DB63A,   3732177 }
+	{ "PE100", 0x000DB63A,   3732177 },
+	{ "PEint", 0x000DC2F3,   1915913 }
 };
 
 
@@ -112,6 +113,7 @@
 }
 
 char *Resource::getJAS2Line() {
+	assert(_JAS2Pos < resourceEntry("QUEEN2.JAS")->size);
 	char *startOfLine = _JAS2Ptr + _JAS2Pos;
 	char *curPos = startOfLine;
 	while (*curPos++ != 0xd) ;

Index: resource.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/resource.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- resource.h	29 Dec 2003 13:18:23 -0000	1.26
+++ resource.h	30 Dec 2003 21:06:22 -0000	1.27
@@ -43,9 +43,9 @@
 	// VER_HEB_TALKIE
 	VER_DEMO_PCGAMES = 9,
 	VER_DEMO         = 10,
-	// VER_INTERVIEW
+	VER_INTERVIEW    = 11,
 
-	VER_COUNT        = 11
+	VER_COUNT        = 12
 };
 
 struct ResourceEntry {

Index: talk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/talk.cpp,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -d -r1.64 -r1.65
--- talk.cpp	29 Dec 2003 21:05:33 -0000	1.64
+++ talk.cpp	30 Dec 2003 21:06:22 -0000	1.65
@@ -1872,6 +1872,20 @@
 
 //#endif
 
+	// Interview
+	{ "JOHN", 0, 0, 1, 2, 2, 3, "", 1 },
+	{ "JOHN", 1, 0, 1, 15, -1, 0, "", 1 },
+	{ "JOHN", 2, 0, 1, 16, -1, 0, "", 1 },
+	{ "JOHN", 3, 0, 1, 17, -1, 0, "", 1 },
+
+	{ "STEVE", 0, 0, 8, 2, 2, 3, "", 2 },
+	{ "STEVE", 1, 0, 8, 16, -1, 0, "", 2 },
+	{ "STEVE", 2, 0, 9, 18, -1, 0, "T016,017,017,016,008,000", 2 },
+	{ "STEVE", 3, 0, 8, 18, -1, 0, "", 2 },
+
+	{ "TONY", 0, 0, 1, 2, 2, 3, "", 1 },
+	{ "TONY", 1, 0, 1, 12, -1, 0, "", 1 },
+
 	{ "*",0,0,0,0,0,0,"",0}
 };
 





More information about the Scummvm-git-logs mailing list