5 import pygame.locals as pgl
7 from naja.constants import KEYS
8 from naja.events import SceneChangeEvent, LoadGameEvent
9 from naja.gamestate import GameState
10 from naja.scenes.scene import Scene
11 from naja.widgets.image_box import ImageBox
12 from naja.widgets.selector import SelectorWidget
13 from naja.widgets.text import TextWidget
16 class NewGameScene(Scene):
17 def __init__(self, state):
18 super(NewGameScene, self).__init__(state)
20 background = ImageBox(
21 (0, 0), "screens/splash.png")
24 selector = SelectorWidget()
28 y_offset, y_diff = 270, 40
33 (x_offset, y_offset), 'NEW GAME', colour='white',
38 question = TextWidget(
39 (x_offset, y_offset), 'Select difficulty:', colour='white',
45 (x_offset, y_offset), 'Easy', fontsize=32, colour='white',
47 easy.add_callback('click', self.easy_game)
51 standard = TextWidget(
52 (x_offset, y_offset), 'Standard', fontsize=32, colour='white',
54 standard.add_callback('click', self.standard_game)
55 selector.add(standard)
59 (x_offset, y_offset), 'Hard', fontsize=32, colour='white',
61 hard.add_callback('click', self.hard_game)
65 very_hard = TextWidget(
66 (x_offset, y_offset), 'Very Hard', fontsize=32, colour='white',
68 very_hard.add_callback('click', self.very_hard_game)
69 selector.add(very_hard)
72 nintendo = TextWidget(
73 (x_offset, y_offset), 'NINTENDO Hard', fontsize=32, colour='white',
75 nintendo.add_callback('click', self.nintendo_hard_game)
76 selector.add(nintendo)
78 def easy_game(self, event):
79 self.start_game(GameState.new(max_health=5, wins_required=3))
81 def standard_game(self, event):
82 self.start_game(GameState.new(max_health=4, wins_required=4))
84 def hard_game(self, event):
85 self.start_game(GameState.new(max_health=3, wins_required=5))
87 def very_hard_game(self, event):
88 self.start_game(GameState.new(max_health=2, wins_required=6))
90 def nintendo_hard_game(self, event):
91 self.start_game(GameState.new(max_health=1, wins_required=7))
93 def start_game(self, state):
94 from naja.scenes.game import GameScene
95 LoadGameEvent.post(state=state)
96 SceneChangeEvent.post(GameScene)
98 def handle_scene_event(self, ev):
99 if ev.type == pgl.KEYDOWN and ev.key in KEYS.QUIT:
100 from naja.scenes.menu import MenuScene
101 SceneChangeEvent.post(MenuScene)