view mamba/habitats/levelmenu.py @ 158:6a866d4710e3

Level chooser scene
author Stefano Rivera <stefano@rivera.za.net>
date Tue, 13 Sep 2011 22:47:26 +0200
parents
children bea4857487de
line wrap: on
line source

"""Level menu."""

from pygame.locals import KEYDOWN

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.levels = []
        for level in range(1, 6):
            button = LockableTextButton((50 + 75 * level, 100), str(level))
            self.container.add(button)
            button.add_callback('clicked', self.level_selected, level)
            if level > 1:
                button.locked = True
        self.container.add_callback(KEYDOWN, self.keydown_event)

    def level_selected(self, ev, widget, level):
        # Demo:
        if widget.locked:
            widget.locked = False
        if level == 1:
            from mamba.habitats.level import LevelHabitat
            NewHabitatEvent.post(LevelHabitat('dev'))
        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