view skaapsteker/menuscene.py @ 79:fe8652a060df

Simple menu screen and TextChoice widget
author Stefano Rivera <stefano@rivera.za.net>
date Mon, 04 Apr 2011 00:46:13 +0200
parents
children 12ce1d131a72
line wrap: on
line source

import pygame
from pygame.locals import (K_ESCAPE, K_DOWN, K_UP, K_q, KEYDOWN, QUIT)

from .engine import ChangeScene, Scene
from .levelscene import LevelScene
from .widgets.text import Text, TextChoice

class MenuScene(Scene):
    def __init__(self):
        super(MenuScene, self).__init__()
        self.widgets.append(Text("MENU:", (50, 50), color='white', size=48))
        choice = TextChoice(("level1", "level2", "Quit"), (50, 100), color='white')
        choice.callbacks.append(self.selected)
        self.widgets.append(choice)

    def selected(self, option):
        "Callback from menu TextChoice"
        if option == 0:
            ChangeScene.post(LevelScene('level1'))
        elif option == 1:
            ChangeScene.post(LevelScene('level2'))
        elif option == 2:
            pygame.event.post(pygame.event.Event(QUIT))

    def draw(self, surface):
        surface.fill(pygame.Color('black'))
        super(MenuScene, self).draw(surface)

    def dispatch(self, ev):
        if ev.type is KEYDOWN:
            if ev.key in(K_q, K_ESCAPE):
                pygame.event.post(pygame.event.Event(QUIT))
        super(MenuScene, self).dispatch(ev)