[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