changeset 14:d7f295c06a4b

Split gameboard screen.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 30 Aug 2009 16:42:44 +0000
parents f4b4d7f44cca
children b69d954f2f1d
files gamelib/engine.py gamelib/gameboard.py
diffstat 2 files changed, 34 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/engine.py	Sun Aug 30 15:23:53 2009 +0000
+++ b/gamelib/engine.py	Sun Aug 30 16:42:44 2009 +0000
@@ -41,6 +41,8 @@
             return MainMenuState(self.game)
         elif events_equal(e, GO_MAIN_MENU):
             return MainMenuState(self.game)
+        elif e.type is not QUIT:
+            self.game.gameboard.event(e)
 
     def paint(self, screen):
         self.game.gameboard.paint(screen)
--- a/gamelib/gameboard.py	Sun Aug 30 15:23:53 2009 +0000
+++ b/gamelib/gameboard.py	Sun Aug 30 16:42:44 2009 +0000
@@ -1,6 +1,6 @@
 import random
 
-from pgu import tilevid
+from pgu import gui, tilevid
 
 import data
 
@@ -13,11 +13,38 @@
         self.tv.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS)
         self.tv.tga_load_level(data.filepath('level1.tga'))
 
+        self.tools = tilevid.Tilevid()
+        self.tools.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS)
+        self.tools.resize((1, 2))
+        self.populate_toolbar()
+
+    def populate_toolbar(self):
+        self.tools.set((0,0), 2)
+        self.tools.set((0,1), 3)
+
+    def split_screen(self, screen):
+        leftbar_rect = screen.get_rect()
+        leftbar_rect.width = self.TILE_DIMENSIONS[0] + 2
+        main_rect = screen.get_rect()
+        main_rect.width -= leftbar_rect.width
+        main_rect.left += leftbar_rect.width
+        return screen.subsurface(leftbar_rect), screen.subsurface(main_rect)
+
     def paint(self, screen):
-        self.tv.paint(screen)
+        leftbar, main = self.split_screen(screen)
+        self.tools.paint(leftbar)
+        self.tv.paint(main)
+
+    def update_vid(self, vid, subsurface):
+        offset = subsurface.get_offset()
+        return [r.move(offset) for r in vid.update(subsurface)]
 
     def update(self, screen):
-        return self.tv.update(screen)
+        leftbar, main = self.split_screen(screen)
+        updates = []
+        updates.extend(self.update_vid(self.tools, leftbar))
+        updates.extend(self.update_vid(self.tv, main))
+        return updates
 
     def loop(self):
         x = random.randint(0, self.tv.size[0]-1)
@@ -25,3 +52,5 @@
         tile = random.randint(0, 4)
         self.tv.set((x, y), tile)
 
+    def event(self, e):
+        pass