annotate gamelib/menu.py @ 673:f67bc162d69e pyntnclick

Working resume button
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 12 Feb 2012 18:44:41 +0200
parents fdc63049b08c
children bdaffaa8b6bf
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)
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
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
d9d1a9c4b833 Add ScreenEvents.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 614
diff changeset
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
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
Stefano Rivera <stefano@rivera.za.net>
parents: 605
diff changeset
45 pygame.event.post(pygame.event.Event(QUIT))