Mercurial > mamba
view mamba/habitats/mainmenu.py @ 400:03db0d517ac3
Little bit of refactoring.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 11:34:11 +0200 |
parents | 12d67f69e6b2 |
children | 001c3797a63b |
line wrap: on
line source
"""Main menu.""" from pygame.locals import KEYDOWN, QUIT import pygame.event from mamba.constants import ESCAPE_KEYS from mamba.engine import Habitat, NewHabitatEvent from mamba.level import Level from mamba.widgets.base import Container from mamba.widgets.text import TextButton class MainMenu(Habitat): def __init__(self): super(MainMenu, self).__init__() self.add_button((100, 100), "Play game", self.start_event) self.add_button((100, 200), "Edit level", self.edit_event) self.add_button((100, 300), "Quit", self.quit_keydown_event) self.add_button((100, 400), "User Levels", self.userlevels_event) self.add_button((100, 500), "Network Levels", self.networklevels_event) self.container.add_callback(KEYDOWN, self.keydown_event) # Just for debugging cascading containers... c = Container((400, 100)) c.add(TextButton((400, 100), "3")) self.container.add(c) c = Container((400, 200)) c.add(TextButton((400, 200), "4")) self.container.add(c) def add_button(self, pos, text, clicked): button = TextButton(pos, text) if clicked is not None: button.add_callback('clicked', clicked) self.container.add(button) return button def start_event(self, ev, widget): from mamba.habitats.levelmenu import LevelMenu NewHabitatEvent.post(LevelMenu()) return True def userlevels_event(self, ev, widget): from mamba.habitats.userlevelmenu import UserLevelMenu NewHabitatEvent.post(UserLevelMenu()) return True def networklevels_event(self, ev, widget): from mamba.habitats.userlevelmenu import NetworkLevelMenu NewHabitatEvent.post(NetworkLevelMenu()) return True def edit_event(self, ev, widget): from mamba.habitats.editor import EditorHabitat NewHabitatEvent.post(EditorHabitat(Level('dev', 'official'))) return True def quit_keydown_event(self, ev, widget): pygame.event.post(pygame.event.Event(QUIT)) return True def keydown_event(self, ev, widget): if ev.key in ESCAPE_KEYS: pygame.event.post(pygame.event.Event(QUIT)) return True