annotate gamelib/menu.py @ 608:a25cd1c6335a pyntnclick

Pass screens through engine by name
author Neil Muller <neil@dip.sun.ac.za>
date Sat, 11 Feb 2012 20:57:28 +0200
parents f2b1ddcc4986
children f20262b41cbf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
1 # menu.py
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
2 # Copyright Boomslang team, 2010 (see COPYING File)
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
3 # Main menu for the game
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
97322b78d1c1 Minor style cleanups
Neil Muller <neil@dip.sun.ac.za>
parents: 100
diff changeset
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)
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
16 # FIXME: Only show this when check_running:
607
f2b1ddcc4986 Make menu and endscreen work.
Jeremy Thurgood <firxen@gmail.com>
parents: 606
diff changeset
17 self.add_image_button((256, 523), 'splash/resume.png', self.resume)
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)
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
22 widget = ImageButtonWidget(rect, image)
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)
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
25
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 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
27 self.surface.blit(self._background, self.surface.get_rect())
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
28
605
ac3690c299e6 Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents: 600
diff changeset
29 def start(self, ev, widget):
608
a25cd1c6335a Pass screens through engine by name
Neil Muller <neil@dip.sun.ac.za>
parents: 607
diff changeset
30 self.change_screen('end')
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
31
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
32 def check_running(self):
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
33 return self.shell.game_screen.running
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
34
605
ac3690c299e6 Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents: 600
diff changeset
35 def resume(self, ev, widget):
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
36 if self.shell.game_screen.running:
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
37 self.shell.show_screen(self.shell.game_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
38
605
ac3690c299e6 Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents: 600
diff changeset
39 def quit(self, ev, widget):
606
Stefano Rivera <stefano@rivera.za.net>
parents: 605
diff changeset
40 pygame.event.post(pygame.event.Event(QUIT))