[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