New game with difficulty selection.
[naja.git] / naja / scenes / menu.py
1 """
2 Main menu scene.
3 """
4
5 import pygame.locals as pgl
6
7 from naja.constants import KEYS
8 from naja.events import SceneChangeEvent, QuitGameEvent
9 from naja.scenes.scene import Scene
10 from naja.scenes.credits import CreditsScene
11 from naja.scenes.game import GameScene
12 from naja.scenes.load_save import LoadGameScene, SaveGameScene
13 from naja.scenes.new_game import NewGameScene
14 from naja.widgets.selector import SelectorWidget
15 from naja.widgets.text import TextWidget
16
17
18 class MenuScene(Scene):
19     def __init__(self, state):
20         super(MenuScene, self).__init__(state)
21         selector = SelectorWidget()
22         self.add(selector)
23
24         run_game = TextWidget((100, 50), 'Game', fontsize=32, colour='white')
25         run_game.add_callback(
26             'click', lambda event: SceneChangeEvent.post(GameScene))
27         selector.add(run_game)
28
29         new_game = TextWidget((100, 100), 'New', fontsize=32, colour='white')
30         new_game.add_callback(
31             'click', lambda event: SceneChangeEvent.post(NewGameScene))
32         selector.add(new_game)
33
34         credits = TextWidget(
35             (100, 150), 'Credits', fontsize=32, colour='white')
36         credits.add_callback(
37             'click', lambda event: SceneChangeEvent.post(CreditsScene))
38         selector.add(credits)
39
40         load = TextWidget((100, 200), 'Load', fontsize=32, colour='white')
41         load.add_callback(
42             'click', lambda event: SceneChangeEvent.post(LoadGameScene))
43         selector.add(load)
44
45         save = TextWidget((100, 250), 'Save', fontsize=32, colour='white')
46         save.add_callback(
47             'click', lambda event: SceneChangeEvent.post(SaveGameScene))
48         selector.add(save)
49
50         quit = TextWidget((100, 300), 'Quit', fontsize=32, colour='white')
51         quit.add_callback('click', lambda event: QuitGameEvent.post())
52         selector.add(quit)
53
54     def handle_scene_event(self, ev):
55         if ev.type == pgl.KEYDOWN:
56             if ev.key in KEYS.QUIT:
57                 QuitGameEvent.post()
58                 return