Scenes get a Container for widgets
[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
17     def __init__(self, state):
18         super(MenuScene, self).__init__(state)
19         self.add(TextWidget((10, 10), 'Game', fontsize=32, colour='white'))
20         self.add(TextWidget((10, 40), 'Credits', fontsize=32, colour='white'))
21         self.add(TextWidget((10, 70), 'Quit', fontsize=32, colour='white'))
22         self.pos = 0
23
24     def handle_scene_event(self, ev):
25         if ev.type == pgl.KEYDOWN:
26             if ev.key in (pgl.K_q, pgl.K_ESCAPE):
27                 QuitGameEvent.post()
28                 return
29             if ev.key == pgl.K_DOWN:
30                 self.pos = (self.pos + 1) % 3
31             elif ev.key == pgl.K_UP:
32                 self.pos = (self.pos - 1) % 3
33             elif ev.key == pgl.K_RETURN:
34                 if self.pos == 2:
35                     QuitGameEvent.post()
36                     return
37                 elif self.pos == 0:
38                     scene = GameScene
39                 elif self.pos == 1:
40                     scene = CreditsScene
41                 SceneChangeEvent.post(scene)