Mercurial > mamba
changeset 332:8643c7dbc8ad
Allow sub-classing level menu.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Fri, 16 Sep 2011 21:05:07 +0200 |
parents | 0c25bca380de |
children | 1fc3fa4f6c9c |
files | mamba/habitats/level.py mamba/habitats/levelmenu.py |
diffstat | 2 files changed, 17 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mamba/habitats/level.py Fri Sep 16 21:04:42 2011 +0200 +++ b/mamba/habitats/level.py Fri Sep 16 21:05:07 2011 +0200 @@ -3,14 +3,15 @@ from pygame.locals import KEYDOWN from mamba.constants import ESCAPE_KEYS -from mamba.engine import Habitat, NewHabitatEvent +from mamba.engine import Habitat from mamba.world import World from mamba.widgets.game import GameWidget class LevelHabitat(Habitat): - def __init__(self, level): + def __init__(self, level, go_menu): super(LevelHabitat, self).__init__() + self.go_menu = go_menu world = World(level) game_widget = GameWidget(world) self.container.add(game_widget) @@ -18,6 +19,5 @@ def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: - from mamba.habitats.mainmenu import MainMenu - NewHabitatEvent.post(MainMenu()) + self.go_menu() return True
--- a/mamba/habitats/levelmenu.py Fri Sep 16 21:04:42 2011 +0200 +++ b/mamba/habitats/levelmenu.py Fri Sep 16 21:05:07 2011 +0200 @@ -14,8 +14,8 @@ def __init__(self): super(LevelMenu, self).__init__() self.level_buttons = {} - for i, name in enumerate(levels): - level = Level(name) + for i, name in enumerate(self.list_levels()): + level = self.get_level(name) button = LevelButton((20 + 120 * i, 20), level, done=name in done_levels) button.add_callback('clicked', self.level_selected, name) @@ -24,15 +24,25 @@ self.container.add_callback(KEYDOWN, self.keydown_event) self.update_buttons() + def list_levels(self): + return levels + + def get_level(self, name): + return Level(name) + def update_buttons(self): for name, button in self.level_buttons.iteritems(): button.done = name in done_levels def level_selected(self, ev, widget, name): from mamba.habitats.level import LevelHabitat - NewHabitatEvent.post(LevelHabitat(widget.level)) + NewHabitatEvent.post(LevelHabitat(widget.level, self.go_menu)) return True + @classmethod + def go_menu(cls): + NewHabitatEvent.post(cls()) + def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: return self.return_to_mainmenu(ev, widget)