changeset 34:e5c043aeed65

Inventory and items. And stuff.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 22 Aug 2010 19:59:42 +0200
parents f8e02d02c782
children ebc76bc0c067
files gamelib/gamescreen.py gamelib/menu.py gamelib/state.py
diffstat 3 files changed, 21 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gamescreen.py	Sun Aug 22 19:51:24 2010 +0200
+++ b/gamelib/gamescreen.py	Sun Aug 22 19:59:42 2010 +0200
@@ -2,7 +2,7 @@
 # Copyright Boomslang team, 2010 (see COPYING File)
 # Main menu for the game
 
-from state import initial_state
+from state import initial_state, Item
 
 from pygame.color import Color
 from pygame import Rect
@@ -14,23 +14,21 @@
 
 class InventoryView(PaletteView):
 
-    info = ["red", "green", "blue", "cyan", "magenta", "yellow"]
-
     sel_color = Color("white")
     sel_width = 2
 
-    def __init__(self):
+    def __init__(self, state):
         PaletteView.__init__(self, (50, 50), 1, 6, scrolling=True)
+        self.state = state
         self.selection = None
 
     def num_items(self):
-        return len(self.info)
+        return len(self.state.inventory)
 
     def draw_item(self, surface, item_no, rect):
         d = -2 * self.sel_width
         r = rect.inflate(d, d)
-        color = Color(self.info[item_no])
-        surface.fill(color, r)
+        surface.blit(self.state.inventory[item_no].get_inventory_image(), r, None, BLEND_ADD)
 
     def click_item(self, item_no, event):
         self.selection = item_no
@@ -38,8 +36,11 @@
     def item_is_selected(self, item_no):
         return self.selection == item_no
 
-    def add_item(self, colstr):
-        self.info.append(colstr)
+    def add_item(self, item):
+        self.info.append(item)
+
+    def remove_item(self, item):
+        self.info.remove(item)
 
 
 class StateWidget(Widget):
@@ -55,7 +56,6 @@
 class GameScreen(Screen):
     def __init__(self, shell):
         Screen.__init__(self, shell)
-        self.shell = shell
 
         # TODO: Randomly plonk the state here for now
         self.state = initial_state()
@@ -74,10 +74,14 @@
             ], align='l', spacing=20)
         self.add_centered(menu)
 
-        self.inventory = InventoryView()
+        self.inventory = InventoryView(self.state)
         self.inventory.bottomleft = self.bottomleft
         self.add(self.inventory)
 
+        # Test items
+        self.state.add_inventory_item('triangle')
+        self.state.add_inventory_item('square')
+
     def main_menu(self):
         print 'Returning to menu'
         self.shell.show_screen(self.shell.menu_screen)
--- a/gamelib/menu.py	Sun Aug 22 19:51:24 2010 +0200
+++ b/gamelib/menu.py	Sun Aug 22 19:59:42 2010 +0200
@@ -9,7 +9,6 @@
 class MenuScreen(Screen):
     def __init__(self, shell):
         Screen.__init__(self, shell)
-        self.shell = shell
         StartButton = Button('Start New Game', action = self.start)
         QuitButton = Button('Quit', action = shell.quit)
         Title = Label('Caught! ... In SPAACE')
--- a/gamelib/state.py	Sun Aug 22 19:51:24 2010 +0200
+++ b/gamelib/state.py	Sun Aug 22 19:59:42 2010 +0200
@@ -49,7 +49,7 @@
         self.inventory.append(self.items[name])
 
     def remove_inventory_item(self, name):
-        self.inventory.remove([self.items[name])
+        self.inventory.remove(self.items[name])
 
     def draw(self, surface):
         self.current_scene.draw(surface)
@@ -111,6 +111,10 @@
 
     def __init__(self):
         self.name = self.NAME
-        # TODO: needs image
+
+        self.inventory_image = get_image('items', self.name)
         # TODO: needs cursor
 
+    def get_inventory_image(self):
+        return self.inventory_image
+