Mercurial > rinkhals
annotate gamelib/mainmenu.py @ 141:dc4bb10cc54c
Fix crash.
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Wed, 02 Sep 2009 23:01:50 +0000 |
parents | 1d73de63bd71 |
children | 082868bea873 |
rev | line source |
---|---|
5
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
1 """Main menu.""" |
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
2 |
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
3 from pgu import gui |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
4 import pygame |
5
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
5 import constants |
11
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
6 import engine |
124
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
7 import imagecache |
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
8 |
139
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
9 def add_main_menu(app): |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
10 """Add the main menu to the app""" |
141 | 11 for widget in app.widgets[:]: |
139
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
12 app.remove(widget) |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
13 |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
14 main_menu = MainMenu() |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
15 |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
16 c = MenuContainer(align=0, valign=0) |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
17 c.add(main_menu, 0, 0) |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
18 |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
19 app.init(c) |
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
20 |
124
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
21 class MenuContainer(gui.Container): |
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
22 def paint(self, s): |
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
23 pygame.display.set_caption(constants.NAME) |
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
24 splash = imagecache.load_image("images/splash.png") |
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
25 pygame.display.get_surface().blit(splash, (0, 0)) |
69fd96eafde8
Display splash screen and replace window title.
Jeremy Thurgood <firxen@gmail.com>
parents:
11
diff
changeset
|
26 gui.Container.paint(self, s) |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
27 |
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
28 class MainMenu(gui.Table): |
6
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
29 def __init__(self, **params): |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
30 gui.Table.__init__(self, **params) |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
31 |
6
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
32 def fullscreen_toggled(): |
5
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
33 pygame.display.toggle_fullscreen() |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
34 |
6
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
35 def quit_pressed(): |
11
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
36 pygame.event.post(engine.QUIT) |
6
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
37 |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
38 def start_pressed(): |
11
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
39 pygame.event.post(engine.START_DAY) |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
40 |
6
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
41 start_button = gui.Button("Start") |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
42 start_button.connect(gui.CLICK, start_pressed) |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
43 |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
44 quit_button = gui.Button("Quit") |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
45 quit_button.connect(gui.CLICK, quit_pressed) |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
46 |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
47 fullscreen_toggle = gui.Button("Toggle Fullscreen") |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
48 fullscreen_toggle.connect(gui.CLICK, fullscreen_toggled) |
5
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
49 |
7 | 50 style = { |
51 "padding_bottom": 15, | |
52 } | |
53 td_kwargs = { | |
54 "align": 0, | |
55 "style": style, | |
56 } | |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
57 |
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff
changeset
|
58 self.tr() |
7 | 59 self.td(start_button, **td_kwargs) |
6
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
60 |
c0abad23a055
Add start, quit and toggle fullscreen buttons to menu.
Simon Cross <hodgestar@gmail.com>
parents:
5
diff
changeset
|
61 self.tr() |
7 | 62 self.td(fullscreen_toggle, **td_kwargs) |
63 | |
64 self.tr() | |
65 self.td(quit_button, **td_kwargs) |