# HG changeset patch # User Stefano Rivera # Date 1316270429 -7200 # Node ID 30ce046d08c3af6a549aa3956ab499ac5b831b9d # Parent f1ba457772ae1feeb360ced0b847b51efdb677e8 Fix clicking in dead dialog bug diff -r f1ba457772ae -r 30ce046d08c3 TODO.txt --- a/TODO.txt Sat Sep 17 15:19:57 2011 +0200 +++ b/TODO.txt Sat Sep 17 16:40:29 2011 +0200 @@ -2,7 +2,6 @@ ==== General: -* Clicking in dead dialog * Enter + Space key in you dead dialogs * Highlight tile borders * Sounds, everywhere diff -r f1ba457772ae -r 30ce046d08c3 mamba/habitats/level.py --- a/mamba/habitats/level.py Sat Sep 17 15:19:57 2011 +0200 +++ b/mamba/habitats/level.py Sat Sep 17 16:40:29 2011 +0200 @@ -3,7 +3,7 @@ from pygame.locals import KEYDOWN from mamba.constants import ESCAPE_KEYS -from mamba.engine import Habitat, LevelCompletedEvent +from mamba.engine import Habitat, LevelCompletedEvent, SnakeDiedEvent from mamba.gamestate import level_done from mamba.widgets.game import GameWidget from mamba.widgets.messagebox import MessageBox @@ -16,10 +16,11 @@ self.go_menu = go_menu self.go_next_level = go_next_level self.world = World(level) - game_widget = GameWidget(self.world) - self.container.add(game_widget) + self.game_widget = GameWidget(self.world) + self.container.add(self.game_widget) self.container.add_callback(KEYDOWN, self.keydown_event) self.container.add_callback(LevelCompletedEvent, self.level_completed) + self.container.add_callback(SnakeDiedEvent, self.snake_died) def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: @@ -34,3 +35,11 @@ MessageBox((300, 200), 'Level complete!', self.go_next_level)) level_done(self.world.level.unique_name()) return True + + def snake_died(self, ev, widget): + if not self.world.pause(): + return False + self.display_dialog(MessageBox((300, 200), 'You died!\n%s' % ev.reason, + self.game_widget.restart)) + self.world.snake.alive = False + return True diff -r f1ba457772ae -r 30ce046d08c3 mamba/widgets/base.py --- a/mamba/widgets/base.py Sat Sep 17 15:19:57 2011 +0200 +++ b/mamba/widgets/base.py Sat Sep 17 16:40:29 2011 +0200 @@ -116,7 +116,7 @@ if child.rect.collidepoint(ev.pos): if ev.type == MOUSEBUTTONDOWN and child.focussable: if not child.grab_focus(): - return False + continue if child.event(ev): return True diff -r f1ba457772ae -r 30ce046d08c3 mamba/widgets/game.py --- a/mamba/widgets/game.py Sat Sep 17 15:19:57 2011 +0200 +++ b/mamba/widgets/game.py Sat Sep 17 16:40:29 2011 +0200 @@ -5,8 +5,7 @@ from mamba.constants import UP, DOWN, LEFT, RIGHT from mamba.widgets.base import Widget -from mamba.widgets.messagebox import MessageBox -from mamba.engine import SnakeDiedEvent, FlipArrowsEvent +from mamba.engine import FlipArrowsEvent class GameWidget(Widget): @@ -17,7 +16,6 @@ super(GameWidget, self).__init__(rect) self.focussable = True self.add_callback(KEYDOWN, self.action_callback) - self.add_callback(SnakeDiedEvent, self.snake_died) self.add_callback(FlipArrowsEvent, self.flip_arrows) def create_action_map(self): @@ -42,16 +40,6 @@ self.world.update() self.world.draw(surface) - def snake_died(self, ev, widget): - if not self.world.pause(): - return False - messagebox = MessageBox((300, 200), 'You died!\n%s' % ev.reason, - self.restart) - self.parent.add(messagebox) - messagebox.grab_focus() - self.world.snake.alive = False - return True - def restart(self): self.world.restart() self.actions = self.create_action_map()