changeset 344:214b2bd173a8

Move level_completed to the Level habitat, so that we can go_menu()
author Stefano Rivera <stefano@rivera.za.net>
date Fri, 16 Sep 2011 22:29:48 +0200
parents 5bf35267ddc0
children 04bb1ffcd054
files mamba/habitats/level.py mamba/widgets/game.py
diffstat 2 files changed, 18 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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())