Mercurial > mamba
annotate mamba/habitats/mainmenu.py @ 474:590aa23648f8
Display credits button
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 17 Sep 2011 21:58:22 +0200 |
parents | 165fcc747951 |
children | c85b4affd80f |
rev | line source |
---|---|
15
ad2bcbf492bf
Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
1 """Main menu.""" |
ad2bcbf492bf
Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
2 |
467 | 3 import pygame |
115
d5aa5f805f00
Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents:
106
diff
changeset
|
4 from pygame.locals import KEYDOWN, QUIT |
61 | 5 import pygame.event |
55
671d027f1b71
Callbacks for events in widgets
Stefano Rivera <stefano@rivera.za.net>
parents:
43
diff
changeset
|
6 |
467 | 7 from mamba.data import load_image |
61 | 8 from mamba.constants import ESCAPE_KEYS |
101
a4eb3f7c0233
Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
91
diff
changeset
|
9 from mamba.engine import Habitat, NewHabitatEvent |
314
fba74abad7b7
Pass Level() objects to LevelHabitat and LevelEditorHabitat, in preparation for generating thumbnails from levels in levelmenu
Stefano Rivera <stefano@rivera.za.net>
parents:
309
diff
changeset
|
10 from mamba.level import Level |
467 | 11 from mamba.widgets.overlay import OverlayButton |
15
ad2bcbf492bf
Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
12 |
61 | 13 |
15
ad2bcbf492bf
Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
14 class MainMenu(Habitat): |
38 | 15 def __init__(self): |
16 super(MainMenu, self).__init__() | |
467 | 17 |
18 self.bg_image = load_image('menus/splash.png') | |
19 self.add_box((117, 135), (556, 85), 'play', self.start_event) | |
20 self.add_box((117, 255), (260, 102), 'user', self.userlevels_event) | |
21 self.add_box((112, 384), (310, 102), 'network', | |
22 self.networklevels_event) | |
23 self.add_box((424, 258), (267, 96), 'editor', self.edit_event) | |
24 self.add_box((435, 389), (210, 90), 'quit', self.quit_keydown_event) | |
474
590aa23648f8
Display credits button
Stefano Rivera <stefano@rivera.za.net>
parents:
467
diff
changeset
|
25 self.add_box((578, 480), (131, 31), 'credits', self.credits_event) |
61 | 26 self.container.add_callback(KEYDOWN, self.keydown_event) |
55
671d027f1b71
Callbacks for events in widgets
Stefano Rivera <stefano@rivera.za.net>
parents:
43
diff
changeset
|
27 |
467 | 28 def draw_background(self): |
29 self.surface.blit(self.bg_image, self.surface.get_rect()) | |
106 | 30 |
467 | 31 def add_box(self, pos, size, overlay_name, clicked): |
32 image = load_image('menus/highlight-%s.png' % overlay_name) | |
33 box = OverlayButton(pygame.Rect(pos, size), image) | |
34 box.add_callback('clicked', clicked) | |
35 self.container.add(box) | |
36 return box | |
400
03db0d517ac3
Little bit of refactoring.
Jeremy Thurgood <firxen@gmail.com>
parents:
399
diff
changeset
|
37 |
101
a4eb3f7c0233
Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
91
diff
changeset
|
38 def start_event(self, ev, widget): |
408
98ccef2a1a3c
Level loading refactorage.
Jeremy Thurgood <firxen@gmail.com>
parents:
402
diff
changeset
|
39 from mamba.habitats.levelmenu import OfficialLevelMenu |
98ccef2a1a3c
Level loading refactorage.
Jeremy Thurgood <firxen@gmail.com>
parents:
402
diff
changeset
|
40 NewHabitatEvent.post(OfficialLevelMenu()) |
115
d5aa5f805f00
Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents:
106
diff
changeset
|
41 return True |
d5aa5f805f00
Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents:
106
diff
changeset
|
42 |
334 | 43 def userlevels_event(self, ev, widget): |
44 from mamba.habitats.userlevelmenu import UserLevelMenu | |
45 NewHabitatEvent.post(UserLevelMenu()) | |
46 return True | |
47 | |
399
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
48 def networklevels_event(self, ev, widget): |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
49 from mamba.habitats.userlevelmenu import NetworkLevelMenu |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
50 NewHabitatEvent.post(NetworkLevelMenu()) |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
51 return True |
12d67f69e6b2
Support for user levels.
Jeremy Thurgood <firxen@gmail.com>
parents:
361
diff
changeset
|
52 |
127
2b50fd1e4ca1
Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
115
diff
changeset
|
53 def edit_event(self, ev, widget): |
2b50fd1e4ca1
Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
115
diff
changeset
|
54 from mamba.habitats.editor import EditorHabitat |
402
001c3797a63b
Editor now uses templates and the user level directory.
Jeremy Thurgood <firxen@gmail.com>
parents:
400
diff
changeset
|
55 NewHabitatEvent.post(EditorHabitat(Level('templates/blank', |
001c3797a63b
Editor now uses templates and the user level directory.
Jeremy Thurgood <firxen@gmail.com>
parents:
400
diff
changeset
|
56 'template'))) |
127
2b50fd1e4ca1
Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
115
diff
changeset
|
57 return True |
2b50fd1e4ca1
Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
115
diff
changeset
|
58 |
115
d5aa5f805f00
Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents:
106
diff
changeset
|
59 def quit_keydown_event(self, ev, widget): |
d5aa5f805f00
Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents:
106
diff
changeset
|
60 pygame.event.post(pygame.event.Event(QUIT)) |
d5aa5f805f00
Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents:
106
diff
changeset
|
61 return True |
101
a4eb3f7c0233
Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents:
91
diff
changeset
|
62 |
474
590aa23648f8
Display credits button
Stefano Rivera <stefano@rivera.za.net>
parents:
467
diff
changeset
|
63 def credits_event(self, ev, widget): |
590aa23648f8
Display credits button
Stefano Rivera <stefano@rivera.za.net>
parents:
467
diff
changeset
|
64 raise NotImplementedError("Shout at Adrianna") |
590aa23648f8
Display credits button
Stefano Rivera <stefano@rivera.za.net>
parents:
467
diff
changeset
|
65 return True |
590aa23648f8
Display credits button
Stefano Rivera <stefano@rivera.za.net>
parents:
467
diff
changeset
|
66 |
61 | 67 def keydown_event(self, ev, widget): |
68 if ev.key in ESCAPE_KEYS: | |
69 pygame.event.post(pygame.event.Event(QUIT)) | |
70 return True |