[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