changeset 492:c1f4f9149349 engine_refactor

Unify Thing and Item interaction handling.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 29 Aug 2010 20:38:03 +0200
parents 9f488671c02e
children d77cc1b17848 93ddcac0b772
files gamelib/state.py
diffstat 1 files changed, 15 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/state.py	Sun Aug 29 19:58:35 2010 +0200
+++ b/gamelib/state.py	Sun Aug 29 20:38:03 2010 +0200
@@ -379,17 +379,22 @@
     def is_interactive(self):
         return True
 
-    def interact(self, item):
+    def interact(self, tool):
         if not self.is_interactive():
-            return
-        if item is None:
+            return None
+        if tool is None:
             return self.interact_without()
+        handler = getattr(self, 'interact_with_' + tool.tool_name, None)
+        inverse_handler = self.get_inverse_interact(tool)
+        if handler is not None:
+            return handler(tool)
+        elif inverse_handler is not None:
+            return inverse_handler(self)
         else:
-            handler = getattr(self, 'interact_with_' + item.tool_name, None)
-            if handler is not None:
-                return handler(item)
-            else:
-                return self.interact_default(item)
+            return self.interact_default(tool)
+
+    def get_inverse_interact(self, tool):
+        return None
 
     def interact_without(self):
         return self.interact_default(None)
@@ -532,17 +537,8 @@
     def get_inventory_image(self):
         return self.inventory_image
 
-    def interact(self, tool):
-        if tool is None:
-            return self.interact_without(state)
-        handler = getattr(self, 'interact_with_' + tool.name, None)
-        inverse_handler = getattr(tool, 'interact_with_' + self.tool_name, None)
-        if handler is not None:
-            return handler(tool)
-        elif inverse_handler is not None:
-            return inverse_handler(self)
-        else:
-            return self.interact_default(tool)
+    def get_inverse_interact(self, tool):
+        return getattr(tool, 'interact_with_' + self.tool_name, None)
 
 
 class CloneableItem(Item):