changeset 17:cbbc5da7708a

Interaction with the game board.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 30 Aug 2009 17:15:23 +0000
parents 10a2bf50e005
children 53960047c186
files gamelib/gameboard.py
diffstat 1 files changed, 25 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/gameboard.py	Sun Aug 30 16:58:38 2009 +0000
+++ b/gamelib/gameboard.py	Sun Aug 30 17:15:23 2009 +0000
@@ -1,12 +1,14 @@
 import random
 
 from pgu import gui, tilevid
+from pygame.locals import MOUSEBUTTONDOWN
 
 import data
 
 
 class GameBoard(object):
     TILE_DIMENSIONS = (20, 20)
+    TOOLBAR_WIDTH = 22
 
     def __init__(self):
         self.tv = tilevid.Tilevid()
@@ -15,16 +17,18 @@
 
         self.tools = tilevid.Tilevid()
         self.tools.tga_load_tiles(data.filepath('tiles.tga'), self.TILE_DIMENSIONS)
-        self.tools.resize((1, 2))
         self.populate_toolbar()
 
+        self.selected_tool = None
+
     def populate_toolbar(self):
+        self.tools.resize((1, 2))
         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
+        leftbar_rect.width = self.TOOLBAR_WIDTH
         main_rect = screen.get_rect()
         main_rect.width -= leftbar_rect.width
         main_rect.left += leftbar_rect.width
@@ -47,10 +51,28 @@
         return updates
 
     def loop(self):
+        return
         x = random.randint(0, self.tv.size[0]-1)
         y = random.randint(0, self.tv.size[1]-1)
         tile = random.randint(0, 4)
         self.tv.set((x, y), tile)
 
+    def select_tool(self, e):
+        tool_pos = self.tools.screen_to_tile(e.pos)
+        if tool_pos[1] < 2:
+            self.selected_tool = self.tools.get(tool_pos)
+        else:
+            self.selected_tool = None
+
+    def use_tool(self, e):
+        if self.selected_tool is None:
+            return
+        pos = self.tv.screen_to_tile((e.pos[0] - self.TOOLBAR_WIDTH, e.pos[1]))
+        self.tv.set(pos, self.selected_tool)
+
     def event(self, e):
-        pass
+        if e.type == MOUSEBUTTONDOWN:
+            if e.pos[0] < self.TOOLBAR_WIDTH:
+                self.select_tool(e)
+            else:
+                self.use_tool(e)