changeset 262:d508248041ff

avoid passing events in twice
author Neil Muller <drnlmuller@gmail.com>
date Sat, 05 Sep 2009 13:36:00 +0000
parents 86291107d67a
children 8896bae31eda
files gamelib/engine.py gamelib/gameboard.py
diffstat 2 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/engine.py	Sat Sep 05 13:20:59 2009 +0000
+++ b/gamelib/engine.py	Sat Sep 05 13:36:00 2009 +0000
@@ -51,8 +51,11 @@
         self.open_window(game_over)
 
     def event(self, e):
-        if not Game.event(self, e) and self.gameboard:
-            self.gameboard.event(e)
+        if not Game.event(self, e):
+            if self.gameboard:
+                return self.gameboard.event(e)
+            return False
+        return True
         
 
 class MainMenuState(State):
--- a/gamelib/gameboard.py	Sat Sep 05 13:20:59 2009 +0000
+++ b/gamelib/gameboard.py	Sat Sep 05 13:36:00 2009 +0000
@@ -1,7 +1,8 @@
 import random
 
 import pygame
-from pygame.locals import MOUSEBUTTONDOWN, MOUSEMOTION, KEYDOWN, K_UP, K_DOWN, K_LEFT, K_RIGHT
+from pygame.locals import MOUSEBUTTONDOWN, MOUSEMOTION, KEYDOWN, K_UP, K_DOWN, \
+        K_LEFT, K_RIGHT
 from pgu import gui
 
 import data
@@ -560,6 +561,15 @@
         def close_callback():
             building.selected(False)
 
+        def evict_callback():
+            print 'evict called', self.animal_to_place
+
+        if not sell_callback:
+            tbl.tr()
+            button = gui.Button('Evict')
+            button.connect(gui.CLICK, evict_callback)
+            tbl.td(button, colspan=2, **kwargs)
+
         self.open_dialog(tbl, close_callback=close_callback)
 
     def buy_fence(self, tile_pos):
@@ -664,7 +674,7 @@
         dialog = self.open_dialog(tbl)
 
     def event(self, e):
-        if e.type == KEYDOWN:
+        if e.type == KEYDOWN and e.key in [K_UP, K_DOWN, K_LEFT, K_RIGHT]:
             if e.key == K_UP:
                 self.tvw.move_view(0, -self.TILE_DIMENSIONS[1])
             if e.key == K_DOWN:
@@ -673,8 +683,8 @@
                 self.tvw.move_view(-self.TILE_DIMENSIONS[0], 0)
             if e.key == K_RIGHT:
                 self.tvw.move_view(self.TILE_DIMENSIONS[0], 0)
-        else:
-            self.disp.event(e)
+            return True
+        return False
 
     def advance_day(self):
         self.days += 1