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

kirben at users.sourceforge.net kirben at users.sourceforge.net
Mon Oct 16 10:41:57 CEST 2006


Revision: 24347
          http://svn.sourceforge.net/scummvm/?rev=24347&view=rev
Author:   kirben
Date:     2006-10-16 01:41:50 -0700 (Mon, 16 Oct 2006)

Log Message:
-----------
Enable menus in WW, allows more progress

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

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2006-10-16 04:51:33 UTC (rev 24346)
+++ scummvm/trunk/engines/agos/agos.cpp	2006-10-16 08:41:50 UTC (rev 24347)
@@ -1329,7 +1329,10 @@
 	_hitAreaSubjectItem = NULL;
 	_hitAreaObjectItem = NULL;
 
-	resetVerbs();
+	if (getGameType() == GType_WW)
+		clearMenuStrip();
+	else
+		resetVerbs();
 
 startOver:
 	for (;;) {
@@ -1368,6 +1371,33 @@
 			setVerb(ha);
 			_defaultVerb = 0;
 		} else {
+			if (getGameType() == GType_WW) {
+				if (ha->id == 98) {
+					loadSprite(2, 0, 110, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 108) {
+					loadSprite(2, 0, 106, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 109) {
+					loadSprite(2, 0, 107, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 115) {
+					loadSprite(2, 0, 109, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 116) {
+					loadSprite(2, 0, 113, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 117) {
+					loadSprite(2, 0, 112, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 118) {
+					loadSprite(2, 0, 108, 0, 0, 0);
+					waitForSync(34);
+				} else if (ha->id == 119) {
+					loadSprite(2, 0, 111, 0, 0, 0);
+					waitForSync(34);
+				}
+			}
 			if ((_verbHitArea != 0 || _hitAreaSubjectItem != ha->item_ptr && ha->flags & kBFBoxItem) &&
 					ha->item_ptr) {
 			if_1:;
@@ -1388,8 +1418,13 @@
 				else
 					_variableArray[60] = id;
 				displayName(ha);
-				if (_verbHitArea != 0)
+
+				if (_verbHitArea != 0) {
 					break;
+				}
+
+				if (getGameType() == GType_WW)
+					doMenuStrip(menuFor(ha->item_ptr, id));
 			} else {
 				// else 1
 				if (ha->verb == 0) {

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2006-10-16 04:51:33 UTC (rev 24346)
+++ scummvm/trunk/engines/agos/agos.h	2006-10-16 08:41:50 UTC (rev 24347)
@@ -657,6 +657,10 @@
 
 	void drawMenuStrip(uint windowNum, uint menuNum);
 
+	uint menuFor(Item *item, uint id);
+	void clearMenuStrip();
+	void doMenuStrip(uint menuNum);
+
 	void checkLinkBox();
  	void hyperLinkOn(uint16 x);
  	void hyperLinkOff();

Modified: scummvm/trunk/engines/agos/menus.cpp
===================================================================
--- scummvm/trunk/engines/agos/menus.cpp	2006-10-16 04:51:33 UTC (rev 24346)
+++ scummvm/trunk/engines/agos/menus.cpp	2006-10-16 08:41:50 UTC (rev 24347)
@@ -123,5 +123,62 @@
 	mouseOn();
 }
 
+// Waxworks specific?
+uint AGOSEngine::menuFor(Item *item, uint id) {
+	if (id != 0xFFFF && id < 10 && _textMenu[id] != 0) {
+		return _textMenu[id];
+	} else {
+		// TODO
+	}
 
+	return 0;
+}
+
+void AGOSEngine::clearMenuStrip() {
+	int i;
+
+	for (i = 111; i != 115; i++)
+		disableBox(i);
+
+	set_video_mode_internal(2, 101);
+}
+
+void AGOSEngine::doMenuStrip(uint menuNum) {
+	int i;
+
+	for (i = 111; i != 115; i++)
+		disableBox(i);
+
+	for (i = 11; i != 16; i++)
+		_variableArray[i] = 0;
+
+	byte *srcPtr = _menuBase;
+	while (menuNum--) {
+		while (READ_BE_UINT16(srcPtr) != 0)
+			srcPtr += 2;
+		srcPtr += 2;
+	}
+
+	uint id = 111;
+	uint var = 11;
+
+	while (READ_BE_UINT16(srcPtr) != 0) {
+		uint verb = READ_BE_UINT16(srcPtr);
+		_variableArray[var] = verb;
+
+		HitArea *ha = findBox(id);
+		if (ha != NULL) {
+			ha->flags &= ~kBFBoxDead;
+			ha->verb = verb;
+		}
+
+		id++;
+		srcPtr += 2;
+		var++;
+	}
+
+	_variableArray[15] = id - 111;
+	set_video_mode_internal(2, 102);
+}
+
 } // End of namespace AGOS

Modified: scummvm/trunk/engines/agos/rooms.cpp
===================================================================
--- scummvm/trunk/engines/agos/rooms.cpp	2006-10-16 04:51:33 UTC (rev 24346)
+++ scummvm/trunk/engines/agos/rooms.cpp	2006-10-16 08:41:50 UTC (rev 24347)
@@ -312,10 +312,6 @@
 				while ((i = in.readUint16BE()) != 0) {
 					_itemArrayPtr[i + 2] = (Item *)allocateItem(sizeof(Item));
 					readItemFromGamePc(&in, _itemArrayPtr[i + 2]);
-
-					Item *tmp = _itemArrayPtr[i + 2];
-					tmp->child = 0;
-					tmp->parent = 0;
 				}
 				in.close();
 


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