Mercurial > mamba
view mamba/habitats/level.py @ 416:30ce046d08c3
Fix clicking in dead dialog bug
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 17 Sep 2011 16:40:29 +0200 |
parents | f1ba457772ae |
children | dee11e9a37b0 |
line wrap: on
line source
"""Where a level object hides.""" from pygame.locals import KEYDOWN from mamba.constants import ESCAPE_KEYS 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 from mamba.world import World class LevelHabitat(Habitat): def __init__(self, level, go_menu, go_next_level): super(LevelHabitat, self).__init__() self.go_menu = go_menu self.go_next_level = go_next_level self.world = World(level) 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: self.world.pause() self.go_menu() return True def level_completed(self, ev, widget): if not self.world.pause(): return False self.display_dialog( 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