annotate mamba/habitats/mainmenu.py @ 236:09247e08aeda

Refactor edit calling code. Tweak toolbar layout
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 23:32:08 +0200
parents 6a866d4710e3
children 67312228c158
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
115
d5aa5f805f00 Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents: 106
diff changeset
3 from pygame.locals import KEYDOWN, QUIT
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
4 import pygame.event
55
671d027f1b71 Callbacks for events in widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 43
diff changeset
5
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
6 from mamba.constants import ESCAPE_KEYS
101
a4eb3f7c0233 Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 91
diff changeset
7 from mamba.engine import Habitat, NewHabitatEvent
106
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
8 from mamba.widgets.base import Container
91
ebd8f46cc553 Text Button
Stefano Rivera <stefano@rivera.za.net>
parents: 61
diff changeset
9 from mamba.widgets.text import TextButton
15
ad2bcbf492bf Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
11
15
ad2bcbf492bf Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12 class MainMenu(Habitat):
38
047273a63054 Main menu says hello
Stefano Rivera <stefano@rivera.za.net>
parents: 15
diff changeset
13 def __init__(self):
047273a63054 Main menu says hello
Stefano Rivera <stefano@rivera.za.net>
parents: 15
diff changeset
14 super(MainMenu, self).__init__()
158
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
15 start = TextButton((100, 100), "Play Game")
115
d5aa5f805f00 Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents: 106
diff changeset
16 start.add_callback('clicked', self.start_event)
101
a4eb3f7c0233 Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 91
diff changeset
17 self.container.add(start)
158
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
18 edit = TextButton((100, 200), "Edit Dev Level")
127
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
19 edit.add_callback('clicked', self.edit_event)
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
20 self.container.add(edit)
158
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
21 quit = TextButton((100, 300), "Quit")
115
d5aa5f805f00 Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents: 106
diff changeset
22 quit.add_callback('clicked', self.quit_keydown_event)
55
671d027f1b71 Callbacks for events in widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 43
diff changeset
23 self.container.add(quit)
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
24 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
25
127
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
26 # Just for debugging cascading containers...
106
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
27 c = Container((400, 100))
158
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
28 c.add(TextButton((400, 100), "3"))
106
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
29 self.container.add(c)
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
30 c = Container((400, 200))
158
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
31 c.add(TextButton((400, 200), "4"))
106
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
32 self.container.add(c)
d1152f2a0e13 Mouse affects focus
Stefano Rivera <stefano@rivera.za.net>
parents: 101
diff changeset
33
101
a4eb3f7c0233 Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 91
diff changeset
34 def start_event(self, ev, widget):
158
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
35 from mamba.habitats.levelmenu import LevelMenu
6a866d4710e3 Level chooser scene
Stefano Rivera <stefano@rivera.za.net>
parents: 127
diff changeset
36 NewHabitatEvent.post(LevelMenu())
115
d5aa5f805f00 Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents: 106
diff changeset
37 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
38
127
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
39 def edit_event(self, ev, widget):
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
40 from mamba.habitats.editor import EditorHabitat
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
41 NewHabitatEvent.post(EditorHabitat('dev'))
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
42 return True
2b50fd1e4ca1 Put level editor on main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 115
diff changeset
43
115
d5aa5f805f00 Add Button class that buttons inherit from. It implements a 'clicked' callback
Stefano Rivera <stefano@rivera.za.net>
parents: 106
diff changeset
44 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
45 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
46 return True
101
a4eb3f7c0233 Start dev level from main menu
Stefano Rivera <stefano@rivera.za.net>
parents: 91
diff changeset
47
61
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
48 def keydown_event(self, ev, widget):
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
49 if ev.key in ESCAPE_KEYS:
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
50 pygame.event.post(pygame.event.Event(QUIT))
fc4b7db1d832 Habitat switching.
Simon Cross <hodgestar@gmail.com>
parents: 55
diff changeset
51 return True