Mercurial > skaapsteker
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 |
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 | 9 |
79
fe8652a060df
Simple menu screen and TextChoice widget
Stefano Rivera <stefano@rivera.za.net>
parents:
diff
changeset
|
10 class MenuScene(Scene): |
262 | 11 def __init__(self, game_state, soundsystem, cur_game=None): |
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 | 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 | 18 ("Temple grounds", "temple_grounds.starting"), |
19 ("Road", "road.starting"), | |
20 ("Town", "town.starting"), | |
21 ("Tea house", "tea_house.starting"), | |
22 ("Kumiko's rooms", "geisha_room.starting"), | |
23 ("Market", "market.starting"), | |
24 ("Fishmonger's house", "fishmonger_house.starting"), | |
25 ("Theatre", "theatre.starting"), | |
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 | 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 | 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 | 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) |