Callbacks for widget events
[naja.git] / naja / scenes / menu.py
1 """
2 Main menu scene.
3 """
4
5 import pygame.locals as pgl
6
7 from naja.scenes.scene import Scene
8 from naja.widgets.text import TextWidget
9 from naja.events import QuitGameEvent
10 from naja.scenes.credits import CreditsScene
11 from naja.scenes.game import GameScene
12 from naja.events import SceneChangeEvent
13
14
15 class MenuScene(Scene):
16     def __init__(self, state):
17         super(MenuScene, self).__init__(state)
18         run_game = TextWidget((100, 100), 'Game', fontsize=32, colour='white')
19         run_game.add_callback('click',
20                               lambda event: SceneChangeEvent.post(GameScene))
21         self.add(run_game)
22         credits = TextWidget((100, 200), 'Credits', fontsize=32, colour='white')
23         credits.add_callback('click',
24                              lambda event: SceneChangeEvent.post(CreditsScene))
25         self.add(credits)
26         quit = TextWidget((100, 300), 'Quit', fontsize=32, colour='white')
27         quit.add_callback('click', lambda event: QuitGameEvent.post())
28         self.add(quit)
29
30     def handle_scene_event(self, ev):
31         if ev.type == pgl.KEYDOWN:
32             if ev.key in (pgl.K_q, pgl.K_ESCAPE):
33                 QuitGameEvent.post()
34                 return