[Scummvm-cvs-logs] SF.net SVN: scummvm: [24143] scummvm/trunk/engines/agos
kirben at users.sourceforge.net
kirben at users.sourceforge.net
Fri Oct 6 18:00:08 CEST 2006
Revision: 24143
http://svn.sourceforge.net/scummvm/?rev=24143&view=rev
Author: kirben
Date: 2006-10-06 08:59:59 -0700 (Fri, 06 Oct 2006)
Log Message:
-----------
Add more code for Elvira 2
Modified Paths:
--------------
scummvm/trunk/engines/agos/agos.h
scummvm/trunk/engines/agos/debug.h
scummvm/trunk/engines/agos/items.cpp
Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h 2006-10-06 15:16:56 UTC (rev 24142)
+++ scummvm/trunk/engines/agos/agos.h 2006-10-06 15:59:59 UTC (rev 24143)
@@ -1043,10 +1043,16 @@
void oe1_printStats();
// Opcodes, Elvira 2 only
- void oe2_setDoorState1();
- void oe2_setDoorState2();
- void oe2_setDoorState3();
+ void oe2_pobj();
+ void oe2_loadUserGame();
+ void oe2_setDoorOpen();
+ void oe2_setDoorClosed();
+ void oe2_setDoorLocked();
+ void oe2_ifDoorOpen();
+ void oe2_ifDoorClosed();
+ void oe2_ifDoorLocked();
void oe2_opcode161();
+ void oe2_screenTextMsg();
// Opcodes, Waxworks only
void oww_moveDirn();
@@ -1054,7 +1060,6 @@
void oww_whereTo();
void oww_menu();
void oww_textMenu();
- void oww_ifDoorOpen();
void oww_opcode184();
void oww_opcode185();
void oww_opcode186();
Modified: scummvm/trunk/engines/agos/debug.h
===================================================================
--- scummvm/trunk/engines/agos/debug.h 2006-10-06 15:16:56 UTC (rev 24142)
+++ scummvm/trunk/engines/agos/debug.h 2006-10-06 15:59:59 UTC (rev 24143)
@@ -477,9 +477,9 @@
"W|START_SUB",
/* 72 */
NULL,
+ "I|PRINT_OBJ",
NULL,
NULL,
- NULL,
/* 76 */
"WW|ADD_TIMEOUT",
"J|IS_M1_EMPTY",
@@ -497,7 +497,7 @@
"W|COMMENT",
/* 88 */
"|STOP_ANIMATION",
- "|RESTART_ANIMATION",
+ "T|LOAD_USER_GAME",
"IB|GET_PARENT",
"IB|GET_NEXT",
/* 92 */
@@ -566,14 +566,14 @@
"WJ|IS_BOX",
"I|START_ITEM_SUB",
/* 144 */
- "IB|SET_DOOR_STATE1",
- "IB|SET_DOOR_STATE2",
- "IB|SET_DOOR_STATE3",
- "IB|SET_DOOR_STATE2",
+ "IB|SET_DOOR_OPEN",
+ "IB|SET_DOOR_CLOSED",
+ "IB|SET_DOOR_LOCKED",
+ "IB|SET_DOOR_OPEN",
/* 148 */
- "IB|IF_DOOR_OPEN",
- NULL,
- NULL,
+ "IBJ|IF_DOOR_OPEN",
+ "IBJ|IF_DOOR_CLOSED",
+ "IBJ|IF_DOOR_LOCKED",
"BI|STORE_ITEM",
/* 152 */
"BB|GET_ITEM",
@@ -587,8 +587,8 @@
NULL,
/* 160 */
"B|SET_INK",
- "BWBW|SETUP_TEXT",
- "BBT|PRINT_STR",
+ "|UNK_161",
+ "BT|PRINT_STR",
"W|PLAY_EFFECT",
/* 164 */
"|getDollar2",
Modified: scummvm/trunk/engines/agos/items.cpp
===================================================================
--- scummvm/trunk/engines/agos/items.cpp 2006-10-06 15:16:56 UTC (rev 24142)
+++ scummvm/trunk/engines/agos/items.cpp 2006-10-06 15:59:59 UTC (rev 24143)
@@ -326,16 +326,21 @@
op[34] = &AGOSEngine::o_copyof;
op[35] = &AGOSEngine::o_copyfo;
op[54] = &AGOSEngine::o_moveDirn;
+ op[73] = &AGOSEngine::oe2_pobj;
op[83] = &AGOSEngine::o1_rescan;
+ op[89] = &AGOSEngine::oe2_loadUserGame;
op[98] = &AGOSEngine::o1_animate;
op[99] = &AGOSEngine::o1_stopAnimate;
op[127] = &AGOSEngine::o1_playTune;
- op[144] = &AGOSEngine::oe2_setDoorState1;
- op[145] = &AGOSEngine::oe2_setDoorState2;
- op[146] = &AGOSEngine::oe2_setDoorState3;
- op[147] = &AGOSEngine::oe2_setDoorState2;
- op[148] = &AGOSEngine::oww_ifDoorOpen;
+ op[144] = &AGOSEngine::oe2_setDoorOpen;
+ op[145] = &AGOSEngine::oe2_setDoorClosed;
+ op[146] = &AGOSEngine::oe2_setDoorLocked;
+ op[147] = &AGOSEngine::oe2_setDoorClosed;
+ op[148] = &AGOSEngine::oe2_ifDoorOpen;
+ op[149] = &AGOSEngine::oe2_ifDoorClosed;
+ op[150] = &AGOSEngine::oe2_ifDoorLocked;
op[161] = &AGOSEngine::oe2_opcode161;
+ op[162] = &AGOSEngine::oe2_screenTextMsg;
op[175] = &AGOSEngine::o_getDollar2;
op[179] = &AGOSEngine::o_isAdjNoun;
op[180] = &AGOSEngine::o_b2Set;
@@ -344,7 +349,6 @@
op[183] = &AGOSEngine::o_b2NotZero;
// Code difference, check if triggered
- op[162] = NULL;
op[163] = NULL;
op[164] = NULL;
op[165] = NULL;
@@ -371,18 +375,23 @@
op[54] = &AGOSEngine::o_moveDirn;
op[55] = &AGOSEngine::oww_goto;
op[70] = &AGOSEngine::o1_printLongText;
+ op[73] = &AGOSEngine::oe2_pobj;
op[83] = &AGOSEngine::o1_rescan;
op[98] = &AGOSEngine::o1_animate;
op[99] = &AGOSEngine::o1_stopAnimate;
op[85] = &AGOSEngine::oww_whereTo;
+ op[89] = &AGOSEngine::oe2_loadUserGame;
op[105] = &AGOSEngine::oww_menu;
op[106] = &AGOSEngine::oww_textMenu;
op[127] = &AGOSEngine::o1_playTune;
- op[144] = &AGOSEngine::oe2_setDoorState1;
- op[145] = &AGOSEngine::oe2_setDoorState2;
- op[146] = &AGOSEngine::oe2_setDoorState3;
- op[147] = &AGOSEngine::oe2_setDoorState2;
- op[148] = &AGOSEngine::oww_ifDoorOpen;
+ op[144] = &AGOSEngine::oe2_setDoorOpen;
+ op[145] = &AGOSEngine::oe2_setDoorClosed;
+ op[146] = &AGOSEngine::oe2_setDoorLocked;
+ op[147] = &AGOSEngine::oe2_setDoorClosed;
+ op[148] = &AGOSEngine::oe2_ifDoorOpen;
+ op[149] = &AGOSEngine::oe2_ifDoorClosed;
+ op[150] = &AGOSEngine::oe2_ifDoorLocked;
+ op[162] = &AGOSEngine::oe2_screenTextMsg;
op[175] = &AGOSEngine::o_getDollar2;
op[179] = &AGOSEngine::o_isAdjNoun;
op[180] = &AGOSEngine::o_b2Set;
@@ -396,7 +405,6 @@
// Code difference, check if triggered
op[161] = NULL;
- op[162] = NULL;
op[163] = NULL;
op[164] = NULL;
op[165] = NULL;
@@ -1907,28 +1915,68 @@
// Elvira 2 Opcodes
// -----------------------------------------------------------------------
-void AGOSEngine::oe2_setDoorState1() {
- // 144:
+void AGOSEngine::oe2_pobj() {
+ // 73: print object
+ SubObject *subObject = (SubObject *)findChildOfType(getNextItemPtr(), 2);
+
+ if (subObject != NULL && subObject->objectFlags & kOFText)
+ showMessageFormat("%s", (const char *)getStringPtrByID(subObject->objectFlagValue[0]));
+}
+
+void AGOSEngine::oe2_loadUserGame() {
+ // 89: load user game
+ getStringPtrByID(getNextStringID());
+}
+
+void AGOSEngine::oe2_setDoorOpen() {
+ // 144: set door open
Item *i = getNextItemPtr();
setDoorState(i, getVarOrByte(), 1);
}
-void AGOSEngine::oe2_setDoorState2() {
- // 145:
+void AGOSEngine::oe2_setDoorClosed() {
+ // 145: set door closed
Item *i = getNextItemPtr();
setDoorState(i, getVarOrByte(), 2);
}
-void AGOSEngine::oe2_setDoorState3() {
- // 146:
+void AGOSEngine::oe2_setDoorLocked() {
+ // 146: set door locked
Item *i = getNextItemPtr();
setDoorState(i, getVarOrByte(), 3);
}
+void AGOSEngine::oe2_ifDoorOpen() {
+ // 148: if door open
+ Item *i = getNextItemPtr();
+ uint16 d = getVarOrByte();
+ setScriptCondition(getDoorState(i, d) == 1);
+}
+
+void AGOSEngine::oe2_ifDoorClosed() {
+ // 149: if door closed
+ Item *i = getNextItemPtr();
+ uint16 d = getVarOrByte();
+ setScriptCondition(getDoorState(i, d) == 2);
+}
+
+void AGOSEngine::oe2_ifDoorLocked() {
+ // 150: if door locked
+ Item *i=getNextItemPtr();
+ uint16 d = getVarOrByte();
+ setScriptCondition(getDoorState(i, d) == 3);
+}
+
void AGOSEngine::oe2_opcode161() {
// 161:
}
+void AGOSEngine::oe2_screenTextMsg() {
+ // 162: print string
+ showMessageFormat("%s\n", getStringPtrByID(getNextStringID()));
+ getVarOrByte();
+}
+
// -----------------------------------------------------------------------
// Waxworks Opcodes
// -----------------------------------------------------------------------
@@ -1970,13 +2018,6 @@
getVarOrByte();
}
-void AGOSEngine::oww_ifDoorOpen() {
- // 148: if door open
- Item *item = getNextItemPtr();
- uint16 d = getVarOrByte();
- setScriptCondition(getDoorState(item, d) != 0);
-}
-
void AGOSEngine::oww_opcode184() {
printf("%s\n", getStringPtrByID(getNextStringID()));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list