5 import pygame.locals as pgl
8 from naja.constants import KEYS, SCREEN
9 from naja.events import SceneChangeEvent, LoadGameEvent
10 from naja.gamestate import GameState
11 from naja.scenes.scene import Scene
12 from naja.scenes.howto import HowtoScene
13 from naja.widgets.image_box import ImageBox
14 from naja.widgets.selector import SelectorWidget
15 from naja.widgets.text import TextWidget
16 from naja.widgets.text import TextBoxWidget
17 from naja.resources import resources
18 from naja.scenes.dummygame import DummyGameScene
19 from naja.widgets.image_box import PreRenderedImageBox
21 class IntroductionScene(Scene):
22 def __init__(self, state):
23 super(IntroductionScene, self).__init__(state)
25 background = ImageBox(
26 (0, 0), "screens/splash.png")
29 selector = SelectorWidget()
32 y_offset, y_diff = 270, 40
37 (x_offset, y_offset), 'Getting started', colour='white',
43 (x_offset, y_offset), 'How to play', colour='white', centre=True)
44 howto.add_callback('click', self.howto_scene)
49 (x_offset, y_offset), 'Introductory Level', colour='white',
51 intro.add_callback('click', self.introduction_level)
56 (x_offset, y_offset), 'Press ESC to return to the main menu.',
57 colour='white', centre=True)
60 def howto_scene(self, event):
61 SceneChangeEvent.post(HowtoScene)
63 def introduction_level(self, event):
64 from naja.scenes.game import GameScene
65 LoadGameEvent.post(state=GameState.new(deck='introduction'))
66 SceneChangeEvent.post(GameScene)
68 def introduction_to_screen_1(self, event):
69 self.container.widgets = []
70 state = resources.get_json('tutorial/tutorial_screen_1.json')
71 dummy_game = DummyGameScene(state)
72 game_surface = pygame.surface.Surface(SCREEN)
73 dummy_game.render(game_surface)
74 self.add(PreRenderedImageBox((0, 0), game_surface))
76 self.add(TextBoxWidget(
78 "You are a robot, frantically trying to set the correct "
79 "bits to gain points for reasons that are unlikely ever "
82 colour='white', padding=1, border=1,
83 bg_colour='black', border_colour='black',
84 box_width=740, view_port=(780, 540)))
87 def handle_scene_event(self, ev):
88 if ev.type == pgl.KEYDOWN and ev.key in KEYS.QUIT:
89 from naja.scenes.menu import MenuScene
90 SceneChangeEvent.post(MenuScene)