changeset 674:94d3552bb4eb pyntnclick

More neat, less crash.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 12 Feb 2012 18:53:58 +0200
parents f67bc162d69e
children 67373f9d2d20
files pyntnclick/gamescreen.py
diffstat 1 files changed, 13 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/pyntnclick/gamescreen.py	Sun Feb 12 18:44:41 2012 +0200
+++ b/pyntnclick/gamescreen.py	Sun Feb 12 18:53:58 2012 +0200
@@ -25,11 +25,9 @@
     SELECTED_COLOR = Color("yellow")
     SELECTED_WIDTH = 2
 
-    def __init__(self, rect, gd, game, state_widget):
+    def __init__(self, rect, gd):
         self.item = None
         super(InventorySlot, self).__init__(rect, gd, None)
-        self.game = game
-        self.state_widget = state_widget
         self.add_callback(MOUSEBUTTONDOWN, self.mouse_down)
 
     def set_item(self, item):
@@ -44,18 +42,18 @@
 
     @property
     def selected(self):
-        return self.game.tool is self.item
+        return self.parent.game.tool is self.item
 
     def mouse_down(self, event, widget):
-        if event.button != 1:
+        if event.button != 1 or not self.item:
             return
         if self.selected:
-            self.game.set_tool(None)
-        elif self.item.is_interactive(self.game.tool):
-            result = self.item.interact(self.game.tool)
-            handle_result(result, self.state_widget)
+            self.parent.select(None)
+        elif self.item.is_interactive(self.parent.game.tool):
+            result = self.item.interact(self.parent.game.tool)
+            handle_result(result, self.parent.state_widget)
         else:
-            self.game.set_tool(self.item)
+            self.parent.select(self.item)
 
 
 class InventoryView(Container):
@@ -79,7 +77,7 @@
     def make_slot(self, slot):
         rect = Rect((self.rect.left + slot * self.bsize, self.rect.top),
                     (self.bsize, self.rect.height))
-        return InventorySlot(rect, self.gd, self.game, self.state_widget)
+        return InventorySlot(rect, self.gd)
 
     def update_slots(self):
         items = (self.slot_items + [None] * len(self.slots))[:len(self.slots)]
@@ -105,6 +103,9 @@
         if event.button != 1:
             self.game.cancel_doodah(self.screen)
 
+    def select(self, tool):
+        self.game.set_tool(tool)
+
 
 class StateWidget(Container):
 
@@ -296,7 +297,7 @@
         super(ToolBar, self).draw(surface)
 
     def hand_callback(self, event, widget):
-        self.inventory.unselect()
+        self.inventory.select(None)
 
     def menu_callback(self, event, widget):
         self.screen.change_screen('menu')