Mercurial > mamba
view mamba/habitats/levelmenu.py @ 236:09247e08aeda
Refactor edit calling code. Tweak toolbar layout
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 14 Sep 2011 23:32:08 +0200 |
parents | bea4857487de |
children | e6a3b00f997b |
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.imagebutton import LockableTextButton class LevelMenu(Habitat): def __init__(self): super(LevelMenu, self).__init__() self.level_buttons = [] for level, name in enumerate(levels): button = LockableTextButton((50 + 75 * level, 100), str(level + 1), color='white') button.add_callback('clicked', self.level_selected, name) button.locked = level not in unlocked_levels self.container.add(button) self.level_buttons.append(button) self.container.add_callback(KEYDOWN, self.keydown_event) self.update_button_colors() def update_button_colors(self): for level, button in enumerate(self.level_buttons): if not button.locked and level not in done_levels: button.color = 'green' else: button.color = 'white' def level_selected(self, ev, widget, name): # Demo: if widget.locked: widget.locked = False self.update_button_colors() 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