[Scummvm-cvs-logs] SF.net SVN: scummvm: [24121] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Thu Oct 5 07:27:17 CEST 2006


Revision: 24121
          http://svn.sourceforge.net/scummvm/?rev=24121&view=rev
Author:   kirben
Date:     2006-10-04 22:27:10 -0700 (Wed, 04 Oct 2006)

Log Message:
-----------
Add more code and stubs for WW

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/items.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2006-10-05 03:43:40 UTC (rev 24120)
+++ scummvm/trunk/engines/agos/agos.cpp	2006-10-05 05:27:10 UTC (rev 24121)
@@ -749,6 +749,19 @@
 	return org;
 }
 
+int AGOSEngine::getUserFlag(Item *item, int a) {
+	SubUserFlag *subUserFlag;
+
+	subUserFlag = (SubUserFlag *) findChildOfType(item, 9);
+	if (subUserFlag == NULL)
+		return 0;
+
+	if (a < 0 || a > 3)
+		return 0;
+
+	return	subUserFlag->userFlags[a];
+}
+
 void AGOSEngine::setUserFlag(Item *item, int a, int b) {
 	SubUserFlag *subUserFlag;
 

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2006-10-05 03:43:40 UTC (rev 24120)
+++ scummvm/trunk/engines/agos/agos.h	2006-10-05 05:27:10 UTC (rev 24121)
@@ -514,6 +514,7 @@
 	uint32 readUint32Wrapper(const void *src);
 
 	int allocGamePcVars(Common::File *in);
+	int getUserFlag(Item *item, int a);
 	void setUserFlag(Item *item, int a, int b);
 	void createPlayer();
 	void allocateStringTable(int num);
@@ -859,7 +860,7 @@
 	void setScriptReturn(int ret);
 	int getScriptReturn();
 
-	// Opcodes, Simon 1 and later
+	// Opcodes, common
 	void o_at();
 	void o_notAt();
 	void o_carried();
@@ -882,6 +883,8 @@
 	void o_oflag();
 	void o_destroy();
 	void o_place();
+	void o_copyof();
+	void o_copyfo();
 	void o_copyff();
 	void o_clear();
 	void o_let();
@@ -1019,6 +1022,8 @@
 	void oww_menu();
 	void oww_textMenu();
 	void oww_ifDoorOpen();
+	void oww_opcode184();
+	void oww_opcode187();
 
 	// Opcodes, Simon 1 only
 	void o1_printLongText();

Modified: scummvm/trunk/engines/agos/items.cpp
===================================================================
--- scummvm/trunk/engines/agos/items.cpp	2006-10-05 03:43:40 UTC (rev 24120)
+++ scummvm/trunk/engines/agos/items.cpp	2006-10-05 05:27:10 UTC (rev 24121)
@@ -200,6 +200,8 @@
 
 	op[51] = &AGOSEngine::o_place;
 
+	op[54] = &AGOSEngine::o_copyof;
+	op[55] = &AGOSEngine::o_copyfo;
 	op[56] = &AGOSEngine::o_copyff;
 
 	op[60] = &AGOSEngine::oe1_setFF;
@@ -309,6 +311,8 @@
 void AGOSEngine::setupElvira2Opcodes(OpcodeProc *op) {
 	setupCommonOpcodes(op);
 
+	op[34] = &AGOSEngine::o_copyof;
+	op[35] = &AGOSEngine::o_copyfo;
 	op[83] = &AGOSEngine::o1_rescan;
 	op[98] = &AGOSEngine::o1_animate;
 	op[99] = &AGOSEngine::o1_stopAnimate;
@@ -324,6 +328,8 @@
 	setupCommonOpcodes(op);
 
 	// Confirmed
+	op[34] = &AGOSEngine::o_copyof;
+	op[35] = &AGOSEngine::o_copyfo;
 	op[54] = &AGOSEngine::oww_moveDirn;
 	op[55] = &AGOSEngine::oww_goto;
 	op[70] = &AGOSEngine::o1_printLongText;
@@ -335,11 +341,14 @@
 	op[106] = &AGOSEngine::oww_textMenu;
 	op[127] = &AGOSEngine::o1_playTune;
 	op[148] = &AGOSEngine::oww_ifDoorOpen;
+	op[175] = &AGOSEngine::o_getDollar2;
 	op[179] = &AGOSEngine::o_isAdjNoun;
 	op[180] = &AGOSEngine::o_b2Set;
 	op[181] = &AGOSEngine::o_b2Clear;
 	op[182] = &AGOSEngine::o_b2Zero;
 	op[183] = &AGOSEngine::o_b2NotZero;
+	op[184] = &AGOSEngine::oww_opcode184;
+	op[187] = &AGOSEngine::oww_opcode187;
 
 	// Code difference, check if triggered
 	op[161] = NULL;
@@ -356,14 +365,11 @@
 	op[172] = NULL;
 	op[173] = NULL;
 	op[174] = NULL;
-	op[175] = NULL;
 	op[176] = NULL;
 	op[177] = NULL;
 	op[178] = NULL;
-	op[184] = NULL;
 	op[185] = NULL;
 	op[186] = NULL;
-	op[187] = NULL;
 	op[188] = NULL;
 	op[189] = NULL;
 	op[190] = NULL;
@@ -702,6 +708,20 @@
 	setItemParent(item, getNextItemPtr());
 }
 
+void AGOSEngine::o_copyof() {
+	// 34:
+	Item *item = getNextItemPtr();
+	uint tmp = getVarOrByte();
+	writeNextVarContents(getUserFlag(item, tmp));
+}
+
+void AGOSEngine::o_copyfo() {
+	// 35:
+	uint tmp = getNextVarContents();
+	Item *item = getNextItemPtr();
+	setUserFlag(item, getVarOrByte(), tmp);
+}
+
 void AGOSEngine::o_copyff() {
 	// 36: copy var
 	uint value = getNextVarContents();
@@ -1792,6 +1812,13 @@
 	setScriptCondition(getDoorState(item, d) != 0);
 }
 
+void AGOSEngine::oww_opcode184() {
+	printf("%s\n", getStringPtrByID(getNextStringID()));
+}
+
+void AGOSEngine::oww_opcode187() {
+}
+
 // -----------------------------------------------------------------------
 // Simon 1 Opcodes
 // -----------------------------------------------------------------------


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