Mercurial > boomslang
annotate gamelib/menu.py @ 693:c8b683dd56d3 pyntnclick
Better modal message and result handling.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Tue, 14 Feb 2012 15:36:28 +0200 |
parents | f67bc162d69e |
children | bdaffaa8b6bf |
rev | line source |
---|---|
17 | 1 # menu.py |
2 # Copyright Boomslang team, 2010 (see COPYING File) | |
3 # Main menu for the game | |
4 | |
607
f2b1ddcc4986
Make menu and endscreen work.
Jeremy Thurgood <firxen@gmail.com>
parents:
606
diff
changeset
|
5 import pygame.event |
f2b1ddcc4986
Make menu and endscreen work.
Jeremy Thurgood <firxen@gmail.com>
parents:
606
diff
changeset
|
6 from pygame.locals import QUIT |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
7 from pyntnclick.engine import Screen |
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
8 from pyntnclick.widgets.imagebutton import ImageButtonWidget |
446
a6de33fecb97
Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents:
124
diff
changeset
|
9 |
124 | 10 |
84
c76f2fad2af5
Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents:
66
diff
changeset
|
11 class MenuScreen(Screen): |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
12 def setup(self): |
607
f2b1ddcc4986
Make menu and endscreen work.
Jeremy Thurgood <firxen@gmail.com>
parents:
606
diff
changeset
|
13 self._background = self.resource.get_image('splash/splash.png') |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
14 |
607
f2b1ddcc4986
Make menu and endscreen work.
Jeremy Thurgood <firxen@gmail.com>
parents:
606
diff
changeset
|
15 self.add_image_button((16, 523), 'splash/play.png', self.start) |
673
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
16 self._resume_button = self.add_image_button((256, 523), |
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
17 'splash/resume.png', self.resume) |
607
f2b1ddcc4986
Make menu and endscreen work.
Jeremy Thurgood <firxen@gmail.com>
parents:
606
diff
changeset
|
18 self.add_image_button((580, 523), 'splash/quit.png', self.quit) |
446
a6de33fecb97
Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents:
124
diff
changeset
|
19 |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
20 def add_image_button(self, rect, image_name, callback): |
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
21 image = self.resource.get_image(image_name) |
639
fdc63049b08c
Add game_description to the widgets,, since it looks a useful thing to do
Neil Muller <neil@dip.sun.ac.za>
parents:
619
diff
changeset
|
22 widget = ImageButtonWidget(rect, self.gd, image) |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
23 widget.add_callback('clicked', callback) |
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
24 self.container.add(widget) |
673
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
25 return widget |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
26 |
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
27 def draw_background(self): |
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
28 self.surface.blit(self._background, self.surface.get_rect()) |
17 | 29 |
673
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
30 def on_enter(self): |
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
31 super(MenuScreen, self).on_enter() |
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
32 self._resume_button.visible = self.check_running() |
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
33 |
605
ac3690c299e6
Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents:
600
diff
changeset
|
34 def start(self, ev, widget): |
619 | 35 self.screen_event('game', 'restart') |
614
974cc69d3762
Special cases aren't special enough to be named special.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
610
diff
changeset
|
36 self.change_screen('game') |
17 | 37 |
100
b5b6cbf556e6
Make start new game start a new game. Add Resume to main menu
Neil Muller <neil@dip.sun.ac.za>
parents:
84
diff
changeset
|
38 def check_running(self): |
673
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
39 return self.gd.running |
17 | 40 |
605
ac3690c299e6
Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents:
600
diff
changeset
|
41 def resume(self, ev, widget): |
673
f67bc162d69e
Working resume button
Stefano Rivera <stefano@rivera.za.net>
parents:
639
diff
changeset
|
42 self.change_screen('game') |
600
fabce47e542f
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
Stefano Rivera <stefano@rivera.za.net>
parents:
599
diff
changeset
|
43 |
605
ac3690c299e6
Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents:
600
diff
changeset
|
44 def quit(self, ev, widget): |
606 | 45 pygame.event.post(pygame.event.Event(QUIT)) |