comparison gamelib/gamescreen.py @ 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 9fdbfbc02a60
comparison
equal deleted inserted replaced
35:ebc76bc0c067 36:31a431f795e1
1 # menu.py 1 # menu.py
2 # Copyright Boomslang team, 2010 (see COPYING File) 2 # Copyright Boomslang team, 2010 (see COPYING File)
3 # Main menu for the game 3 # Main menu for the game
4 4
5 from state import initial_state, Item 5 from state import initial_state, Item
6 from hand import HandButton
6 7
7 from pygame.color import Color 8 from pygame.color import Color
8 from pygame import Rect 9 from pygame import Rect
9 from pygame.locals import BLEND_ADD 10 from pygame.locals import BLEND_ADD
10 from albow.screen import Screen 11 from albow.screen import Screen
16 class InventoryView(PaletteView): 17 class InventoryView(PaletteView):
17 18
18 sel_color = Color("white") 19 sel_color = Color("white")
19 sel_width = 2 20 sel_width = 2
20 21
21 def __init__(self, state): 22 def __init__(self, state, handbutton):
22 PaletteView.__init__(self, (50, 50), 1, 6, scrolling=True) 23 PaletteView.__init__(self, (50, 50), 1, 6, scrolling=True)
23 self.state = state 24 self.state = state
24 self.selection = None 25 self.selection = None
26 self.handbutton = handbutton
25 27
26 def num_items(self): 28 def num_items(self):
27 return len(self.state.inventory) 29 return len(self.state.inventory)
28 30
29 def draw_item(self, surface, item_no, rect): 31 def draw_item(self, surface, item_no, rect):
31 r = rect.inflate(d, d) 33 r = rect.inflate(d, d)
32 surface.blit(self.state.inventory[item_no].get_inventory_image(), r, None, BLEND_ADD) 34 surface.blit(self.state.inventory[item_no].get_inventory_image(), r, None, BLEND_ADD)
33 35
34 def click_item(self, item_no, event): 36 def click_item(self, item_no, event):
35 self.selection = item_no 37 self.selection = item_no
38 self.handbutton.unselect()
36 39
37 def item_is_selected(self, item_no): 40 def item_is_selected(self, item_no):
38 return self.selection == item_no 41 return self.selection == item_no
39 42
40 def add_item(self, item): 43 def unselect(self):
41 self.info.append(item) 44 self.selection = None
42
43 def remove_item(self, item):
44 self.info.remove(item)
45
46 45
47 class StateWidget(Widget): 46 class StateWidget(Widget):
48 47
49 def __init__(self, state): 48 def __init__(self, state):
50 Widget.__init__(self, Rect(0, 0, 800, 550)) 49 Widget.__init__(self, Rect(0, 0, 800, 550))
72 StartButton, 71 StartButton,
73 QuitButton, 72 QuitButton,
74 AddItemButton, 73 AddItemButton,
75 ], align='l', spacing=20) 74 ], align='l', spacing=20)
76 self.add_centered(menu) 75 self.add_centered(menu)
76 self.menubutton = Button('M', action=self.main_menu)
77 self.menubutton.bottomleft = self.bottomleft
78 self.add(self.menubutton)
79 self.handbutton = HandButton(action=self.hand_pressed)
80 self.handbutton.bottomleft = self.bottomleft
81 self.handbutton.get_rect().move_ip(50, 0)
82 self.add(self.handbutton)
83 self.inventory = InventoryView(self.state, self.handbutton)
77 84
78 self.inventory = InventoryView(self.state)
79 self.inventory.bottomleft = self.bottomleft 85 self.inventory.bottomleft = self.bottomleft
86 self.inventory.get_rect().move_ip(100, 0)
80 self.add(self.inventory) 87 self.add(self.inventory)
81 88
82 # Test items 89 # Test items
83 self.state.add_inventory_item('triangle') 90 self.state.add_inventory_item('triangle')
84 self.state.add_inventory_item('square') 91 self.state.add_inventory_item('square')
86 def main_menu(self): 93 def main_menu(self):
87 print 'Returning to menu' 94 print 'Returning to menu'
88 self.shell.show_screen(self.shell.menu_screen) 95 self.shell.show_screen(self.shell.menu_screen)
89 96
90 def add_item(self): 97 def add_item(self):
91 self.inventory.add_item("white") 98 self.state.add_inventory_item("triangle")
99
100 def hand_pressed(self):
101 self.handbutton.toggle_selected()
102 self.inventory.unselect()
103