[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