annotate skaapsteker/menuscene.py @ 274:e006ec7b3d8f

proper levels
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Fri, 08 Apr 2011 19:12:44 +0200
parents afd9256ad682
children 8631e38afc24
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
1 import pygame
133
aca8b7456c72 Pass engine to all Scene draw() methods
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
2 from pygame.locals import K_ESCAPE, K_q, KEYDOWN, QUIT
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
3
134
4713a2a3b0be Initial cutscene screen
Stefano Rivera <stefano@rivera.za.net>
parents: 133
diff changeset
4 from .cutscene import opening_cutscene
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
5 from .engine import ChangeScene, Scene
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
6 from .levelscene import LevelScene
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
7 from .widgets.text import Text, TextChoice
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
8
248
129afb4417cf Some light cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 218
diff changeset
9
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
10 class MenuScene(Scene):
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 248
diff changeset
11 def __init__(self, game_state, soundsystem, cur_game=None):
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 248
diff changeset
12 super(MenuScene, self).__init__(game_state, soundsystem)
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
13 self.widgets.append(Text("MENU:", (50, 50), color='white', size=48))
104
12ce1d131a72 Hack in resume game option
Neil Muller <drnlmuller@gmail.com>
parents: 79
diff changeset
14 self.cur_game = cur_game
110
f64c38c5512d Use TextChoice data in menu screen (it's no longer hacked to death)
Stefano Rivera <stefano@rivera.za.net>
parents: 109
diff changeset
15 menu_options = [
274
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
16 ('Starting Cutscene', 'cutscene'),
264
afd9256ad682 Move between doorways. (Still with hacky collision limiting.)
Jeremy Thurgood <firxen@gmail.com>
parents: 262
diff changeset
17 ('Temple', 'temple.starting'),
274
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
18 ("Temple grounds", "temple_grounds.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
19 ("Road", "road.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
20 ("Town", "town.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
21 ("Tea house", "tea_house.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
22 ("Kumiko's rooms", "geisha_room.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
23 ("Market", "market.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
24 ("Fishmonger's house", "fishmonger_house.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
25 ("Theatre", "theatre.starting"),
e006ec7b3d8f proper levels
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 264
diff changeset
26 ("Celestial plane", "celestial_plane.starting"),
110
f64c38c5512d Use TextChoice data in menu screen (it's no longer hacked to death)
Stefano Rivera <stefano@rivera.za.net>
parents: 109
diff changeset
27 ('Quit', 'quit'),
f64c38c5512d Use TextChoice data in menu screen (it's no longer hacked to death)
Stefano Rivera <stefano@rivera.za.net>
parents: 109
diff changeset
28 ]
f64c38c5512d Use TextChoice data in menu screen (it's no longer hacked to death)
Stefano Rivera <stefano@rivera.za.net>
parents: 109
diff changeset
29 if cur_game is not None:
f64c38c5512d Use TextChoice data in menu screen (it's no longer hacked to death)
Stefano Rivera <stefano@rivera.za.net>
parents: 109
diff changeset
30 menu_options.insert(0, ('Resume Game', 'resume'))
f64c38c5512d Use TextChoice data in menu screen (it's no longer hacked to death)
Stefano Rivera <stefano@rivera.za.net>
parents: 109
diff changeset
31 self.choice = TextChoice(menu_options, (50, 100), color='white')
104
12ce1d131a72 Hack in resume game option
Neil Muller <drnlmuller@gmail.com>
parents: 79
diff changeset
32 self.choice.callbacks.append(self.selected)
12ce1d131a72 Hack in resume game option
Neil Muller <drnlmuller@gmail.com>
parents: 79
diff changeset
33 self.widgets.append(self.choice)
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
34
109
982f34d0aac0 Add optional data to identify TextChoice options
Stefano Rivera <stefano@rivera.za.net>
parents: 104
diff changeset
35 def selected(self, option, data):
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
36 "Callback from menu TextChoice"
218
7ee5bd883d62 renamed first proper level
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 170
diff changeset
37 if data == 'resume':
104
12ce1d131a72 Hack in resume game option
Neil Muller <drnlmuller@gmail.com>
parents: 79
diff changeset
38 ChangeScene.post(self.cur_game)
134
4713a2a3b0be Initial cutscene screen
Stefano Rivera <stefano@rivera.za.net>
parents: 133
diff changeset
39 elif data == 'cutscene':
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 248
diff changeset
40 ChangeScene.post(opening_cutscene(self.game_state, self._soundsystem))
134
4713a2a3b0be Initial cutscene screen
Stefano Rivera <stefano@rivera.za.net>
parents: 133
diff changeset
41 elif data == 'quit':
4713a2a3b0be Initial cutscene screen
Stefano Rivera <stefano@rivera.za.net>
parents: 133
diff changeset
42 pygame.event.post(pygame.event.Event(QUIT))
218
7ee5bd883d62 renamed first proper level
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 170
diff changeset
43 else:
262
de60329cfc9f Factor out sound stuff
Neil Muller <drnlmuller@gmail.com>
parents: 248
diff changeset
44 ChangeScene.post(LevelScene(self.game_state, self._soundsystem, data))
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
45
123
592477d8b09b Add fps to game
Neil Muller <drnlmuller@gmail.com>
parents: 119
diff changeset
46 def draw(self, surface, engine):
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
47 surface.fill(pygame.Color('black'))
133
aca8b7456c72 Pass engine to all Scene draw() methods
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
48 super(MenuScene, self).draw(surface, engine)
79
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
49
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
50 def dispatch(self, ev):
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
51 if ev.type is KEYDOWN:
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
52 if ev.key in(K_q, K_ESCAPE):
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
53 pygame.event.post(pygame.event.Event(QUIT))
fe8652a060df Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
54 super(MenuScene, self).dispatch(ev)