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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
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
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
5 import pygame.event
55
671d027f1b71 Callbacks for events in widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 43
diff changeset
6
467
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
7 from mamba.data import load_image
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
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
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
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
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
13
15
ad2bcbf492bf Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
14 class MainMenu(Habitat):
38
047273a63054 Main menu says hello
Stefano Rivera <stefano@rivera.za.net>
parents: 15
diff changeset
15 def __init__(self):
047273a63054 Main menu says hello
Stefano Rivera <stefano@rivera.za.net>
parents: 15
diff changeset
16 super(MainMenu, self).__init__()
467
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
17
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
18 self.bg_image = load_image('menus/splash.png')
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
19 self.add_box((117, 135), (556, 85), 'play', self.start_event)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
20 self.add_box((117, 255), (260, 102), 'user', self.userlevels_event)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
21 self.add_box((112, 384), (310, 102), 'network',
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
22 self.networklevels_event)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
23 self.add_box((424, 258), (267, 96), 'editor', self.edit_event)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
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
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
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
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
28 def draw_background(self):
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
29 self.surface.blit(self.bg_image, self.surface.get_rect())
106
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
30
467
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
31 def add_box(self, pos, size, overlay_name, clicked):
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
32 image = load_image('menus/highlight-%s.png' % overlay_name)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
33 box = OverlayButton(pygame.Rect(pos, size), image)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
34 box.add_callback('clicked', clicked)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
35 self.container.add(box)
165fcc747951 Splishy splash
Stefano Rivera <stefano@rivera.za.net>
parents: 408
diff changeset
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
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
43 def userlevels_event(self, ev, widget):
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
44 from mamba.habitats.userlevelmenu import UserLevelMenu
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
45 NewHabitatEvent.post(UserLevelMenu())
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
46 return True
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
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
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
67 def keydown_event(self, ev, widget):
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
68 if ev.key in ESCAPE_KEYS:
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
69 pygame.event.post(pygame.event.Event(QUIT))
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
70 return True