Mercurial > mamba
view mamba/habitats/levelmenu.py @ 293:e6a3b00f997b
Ticks on the levelmenu
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Fri, 16 Sep 2011 00:07:11 +0200 |
parents | bea4857487de |
children | b371c2ea309e |
line wrap: on
line source
"""Level menu.""" from pygame.locals import KEYDOWN from mamba.gamestate import levels, unlocked_levels, done_levels from mamba.constants import ESCAPE_KEYS from mamba.engine import Habitat, NewHabitatEvent from mamba.widgets.levelbutton import LevelButton class LevelMenu(Habitat): def __init__(self): super(LevelMenu, self).__init__() self.level_buttons = {} for level, name in enumerate(levels): button = LevelButton((50 + 75 * level, 100), str(level + 1), locked=level not in unlocked_levels, done=level in done_levels) button.add_callback('clicked', self.level_selected, name) self.container.add(button) self.level_buttons[name] = button self.container.add_callback(KEYDOWN, self.keydown_event) self.update_buttons() def update_buttons(self): for name, button in self.level_buttons.iteritems(): button.locked = name not in unlocked_levels button.done = name in done_levels def level_selected(self, ev, widget, name): # Demo: if widget.locked: unlocked_levels.add(name) self.update_buttons() return True if not widget.locked: from mamba.habitats.level import LevelHabitat NewHabitatEvent.post(LevelHabitat(name)) return True def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: return self.return_to_mainmenu(ev, widget) def return_to_mainmenu(self, ev, widget): from mamba.habitats.mainmenu import MainMenu NewHabitatEvent.post(MainMenu()) return True