view mamba/habitats/mainmenu.py @ 127:2b50fd1e4ca1

Put level editor on main menu
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 11 Sep 2011 21:47:44 +0200
parents d5aa5f805f00
children 6a866d4710e3
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.widgets.base import Container
from mamba.widgets.text import TextButton


class MainMenu(Habitat):
    def __init__(self):
        super(MainMenu, self).__init__()
        start = TextButton((100, 100), "Dev Level", color='white')
        start.add_callback('clicked', self.start_event)
        self.container.add(start)
        edit = TextButton((100, 200), "Edit Dev Level", color='white')
        edit.add_callback('clicked', self.edit_event)
        self.container.add(edit)
        quit = TextButton((100, 300), "Quit", color='white')
        quit.add_callback('clicked', self.quit_keydown_event)
        self.container.add(quit)
        self.container.add_callback(KEYDOWN, self.keydown_event)

        # Just for debugging cascading containers...
        c = Container((400, 100))
        c.add(TextButton((400, 100), "3", color='white'))
        self.container.add(c)
        c = Container((400, 200))
        c.add(TextButton((400, 200), "4", color='white'))
        self.container.add(c)

    def start_event(self, ev, widget):
        from mamba.habitats.level import LevelHabitat
        NewHabitatEvent.post(LevelHabitat('dev'))
        return True

    def edit_event(self, ev, widget):
        from mamba.habitats.editor import EditorHabitat
        NewHabitatEvent.post(EditorHabitat('dev'))
        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