[Scummvm-cvs-logs] SF.net SVN: scummvm:[47970] scummvm/trunk/engines/teenagent/inventory.cpp
megath at users.sourceforge.net
megath at users.sourceforge.net
Sun Feb 7 18:14:32 CET 2010
Revision: 47970
http://scummvm.svn.sourceforge.net/scummvm/?rev=47970&view=rev
Author: megath
Date: 2010-02-07 17:14:32 +0000 (Sun, 07 Feb 2010)
Log Message:
-----------
process object callback both on left and right click. skip r-click callback for banknote.
Modified Paths:
--------------
scummvm/trunk/engines/teenagent/inventory.cpp
Modified: scummvm/trunk/engines/teenagent/inventory.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.cpp 2010-02-07 17:13:39 UTC (rev 47969)
+++ scummvm/trunk/engines/teenagent/inventory.cpp 2010-02-07 17:14:32 UTC (rev 47970)
@@ -119,6 +119,20 @@
error("no room for item %u", item);
}
+bool Inventory::tryObjectCallback(InventoryObject *obj) {
+ byte id = obj->id;
+ uint i = 0;
+ for (byte *table = Resources::instance()->dseg.ptr(0xBB6F + 3); table[0] != 0 && i < 7; table += 3, ++i) {
+ if (table[0] == id) {
+ resetSelectedObject();
+ activate(false);
+ if (_engine->processCallback(READ_LE_UINT16(table + 1)))
+ return true;
+ }
+ }
+ return false;
+}
+
bool Inventory::processEvent(const Common::Event &event) {
Resources *res = Resources::instance();
@@ -162,6 +176,8 @@
debug(0, "lclick on %u:%s", hovered_obj->id, hovered_obj->name.c_str());
if (selected_obj == NULL) {
+ if (tryObjectCallback(hovered_obj))
+ return true;
//activate(false);
int w = res->font7.render(NULL, 0, 0, hovered_obj->description, 0xd1);
_engine->scene->displayMessage(hovered_obj->description, 0xd1, Common::Point((320 - w) / 2, 162));
@@ -205,18 +221,9 @@
return false;
if (hovered_obj != NULL) {
- byte id = hovered_obj->id;
- debug(0, "rclick object %u", id);
- uint i = 0;
- for (byte *table = res->dseg.ptr(0xBB6F + 3); //original offset + 3 bytes.
- table[0] != 0 && i < 7; table += 3, ++i) {
- if (table[0] == id) {
- resetSelectedObject();
- activate(false);
- if (_engine->processCallback(READ_LE_UINT16(table + 1)))
- return true;
- }
- }
+ debug(0, "rclick object %u:%s", hovered_obj->id, hovered_obj->name.c_str());
+ if (hovered_obj->id != 51 && tryObjectCallback(hovered_obj)) //do not process callback for banknote on r-click
+ return true;
}
selected_obj = hovered_obj;
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