changeset 36:31a431f795e1

Add a hand button placeholder
author Neil Muller <neil@dip.sun.ac.za>
date Sun, 22 Aug 2010 20:25:13 +0200
parents ebc76bc0c067
children d449c4674da8
files gamelib/gamescreen.py gamelib/hand.py
diffstat 2 files changed, 54 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gamescreen.py	Sun Aug 22 20:05:37 2010 +0200
+++ b/gamelib/gamescreen.py	Sun Aug 22 20:25:13 2010 +0200
@@ -3,6 +3,7 @@
 # Main menu for the game
 
 from state import initial_state, Item
+from hand import HandButton
 
 from pygame.color import Color
 from pygame import Rect
@@ -18,10 +19,11 @@
     sel_color = Color("white")
     sel_width = 2
 
-    def __init__(self, state):
+    def __init__(self, state, handbutton):
         PaletteView.__init__(self, (50, 50), 1, 6, scrolling=True)
         self.state = state
         self.selection = None
+        self.handbutton = handbutton
 
     def num_items(self):
         return len(self.state.inventory)
@@ -33,16 +35,13 @@
 
     def click_item(self, item_no, event):
         self.selection = item_no
+        self.handbutton.unselect()
 
     def item_is_selected(self, item_no):
         return self.selection == item_no
 
-    def add_item(self, item):
-        self.info.append(item)
-
-    def remove_item(self, item):
-        self.info.remove(item)
-
+    def unselect(self):
+        self.selection = None
 
 class StateWidget(Widget):
 
@@ -74,9 +73,17 @@
             AddItemButton,
             ], align='l', spacing=20)
         self.add_centered(menu)
+        self.menubutton = Button('M', action=self.main_menu)
+        self.menubutton.bottomleft = self.bottomleft
+        self.add(self.menubutton)
+        self.handbutton = HandButton(action=self.hand_pressed)
+        self.handbutton.bottomleft = self.bottomleft
+        self.handbutton.get_rect().move_ip(50, 0)
+        self.add(self.handbutton)
+        self.inventory = InventoryView(self.state, self.handbutton)
 
-        self.inventory = InventoryView(self.state)
         self.inventory.bottomleft = self.bottomleft
+        self.inventory.get_rect().move_ip(100, 0)
         self.add(self.inventory)
 
         # Test items
@@ -88,4 +95,9 @@
         self.shell.show_screen(self.shell.menu_screen)
 
     def add_item(self):
-        self.inventory.add_item("white")
+        self.state.add_inventory_item("triangle")
+
+    def hand_pressed(self):
+        self.handbutton.toggle_selected()
+        self.inventory.unselect()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gamelib/hand.py	Sun Aug 22 20:25:13 2010 +0200
@@ -0,0 +1,33 @@
+# Button for the hand image
+
+from albow.controls import ImageButton
+from albow.resource import get_image
+from albow.utils import frame_rect
+from pygame.color import Color
+
+class HandButton(ImageButton):
+   """The fancy hand button for the widget"""
+
+   sel_colour = Color('red')
+   sel_width = 2
+
+   def __init__(self, action):
+      # FIXME: Yes, please.
+      this_image = get_image('items', 'square.png')
+      ImageButton.__init__(self, image=this_image, action=action)
+      self.selected = False # Flag if we're selected
+
+   def draw(self, surface):
+      """Draw the widget"""
+      print 'drawing widget', self.selected
+      ImageButton.draw(self, surface)
+      if self.selected:
+         rect = surface.get_rect().inflate(-self.sel_width, -self.sel_width)
+         frame_rect(surface, self.sel_colour, rect, self.sel_width)
+
+   def toggle_selected(self):
+      self.selected = not self.selected
+
+   def unselect(self):
+       self.selected = False
+