# HG changeset patch # User Stefano Rivera # Date 1316204988 -7200 # Node ID 214b2bd173a8b16910763b5ec0220160235986d2 # Parent 5bf35267ddc02560649b9be1688d94f1786d8a04 Move level_completed to the Level habitat, so that we can go_menu() diff -r 5bf35267ddc0 -r 214b2bd173a8 mamba/habitats/level.py --- a/mamba/habitats/level.py Fri Sep 16 22:24:39 2011 +0200 +++ b/mamba/habitats/level.py Fri Sep 16 22:29:48 2011 +0200 @@ -3,21 +3,34 @@ from pygame.locals import KEYDOWN from mamba.constants import ESCAPE_KEYS -from mamba.engine import Habitat +from mamba.engine import Habitat, LevelCompletedEvent +from mamba.gamestate import level_done +from mamba.widgets.game import GameWidget +from mamba.widgets.messagebox import MessageBox from mamba.world import World -from mamba.widgets.game import GameWidget class LevelHabitat(Habitat): def __init__(self, level, go_menu): super(LevelHabitat, self).__init__() self.go_menu = go_menu - world = World(level) - game_widget = GameWidget(world) + self.world = World(level) + game_widget = GameWidget(self.world) self.container.add(game_widget) self.container.add_callback(KEYDOWN, self.keydown_event) + self.container.add_callback(LevelCompletedEvent, self.level_completed) def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: self.go_menu() return True + + def level_completed(self, ev, widget): + if not self.world.pause(): + return False + messagebox = MessageBox((300, 200), 'Level complete!', + self.go_menu) + self.container.add(messagebox) + messagebox.grab_focus() + level_done(self.world.level.level_name) + return True diff -r 5bf35267ddc0 -r 214b2bd173a8 mamba/widgets/game.py --- a/mamba/widgets/game.py Fri Sep 16 22:24:39 2011 +0200 +++ b/mamba/widgets/game.py Fri Sep 16 22:29:48 2011 +0200 @@ -6,10 +6,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, LevelCompletedEvent, NewHabitatEvent, - FlipArrowsEvent) -from mamba.habitats.mainmenu import MainMenu -from mamba.gamestate import level_done +from mamba.engine import SnakeDiedEvent, FlipArrowsEvent class GameWidget(Widget): @@ -21,7 +18,6 @@ self.focussable = True self.add_callback(KEYDOWN, self.action_callback) self.add_callback(SnakeDiedEvent, self.snake_died) - self.add_callback(LevelCompletedEvent, self.level_completed) self.add_callback(FlipArrowsEvent, self.flip_arrows) def create_action_map(self): @@ -59,17 +55,3 @@ self.world.restart() self.actions = self.create_action_map() self.grab_focus() - - def level_completed(self, ev, widget): - if not self.world.pause(): - return False - messagebox = MessageBox((300, 200), 'Level complete!', - self.go_mainmenu) - self.parent.add(messagebox) - messagebox.grab_focus() - level_done(self.world.level.level_name) - return True - - def go_mainmenu(self): - self.grab_focus() - NewHabitatEvent.post(MainMenu())