annotate gamelib/menu.py @ 446:a6de33fecb97

Hook up splash screen
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 29 Aug 2010 00:30:17 +0200
parents 97322b78d1c1
children ece69836f00a
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
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
5 from albow.screen import Screen
446
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
6 from albow.controls import Image, Button, Label
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
7 from albow.layout import Column
446
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
8 from albow.resource import get_image
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
9 from pygame import Rect
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
10
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
11 class SplashButton(Image):
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
12 """The fancy hand button for the widget"""
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
13
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
14 def __init__(self, filename, x, y, action, enable=None):
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
15 this_image = get_image('splash', filename)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
16 Image.__init__(self, image=this_image)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
17 self.action = action
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
18 self.set_rect(Rect((x, y), this_image.get_size()))
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
19 self.enable = enable
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
20
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
21 def draw(self, surface):
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
22 if self.is_enabled():
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
23 surface.blit(self.get_image(), self.get_rect())
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
24
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
25 def mouse_down(self, event):
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
26 if self.is_enabled():
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
27 self.action()
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
28
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
29 def is_enabled(self):
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
30 if self.enable:
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
31 return self.enable()
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
32 return True
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
33
124
97322b78d1c1 Minor style cleanups
Neil Muller <neil@dip.sun.ac.za>
parents: 100
diff changeset
34
84
c76f2fad2af5 Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents: 66
diff changeset
35 class MenuScreen(Screen):
19
87f8a46b88af Fix indentation
Neil Muller <neil@dip.sun.ac.za>
parents: 17
diff changeset
36 def __init__(self, shell):
84
c76f2fad2af5 Draw CursorWidget on top of StateWidget
Stefano Rivera <stefano@rivera.za.net>
parents: 66
diff changeset
37 Screen.__init__(self, shell)
446
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
38 self._background = get_image('splash', 'splash.png')
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
39 self._start_button = SplashButton('play.png', 16, 523, self.start)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
40 self._resume_button = SplashButton('resume.png', 256, 523, self.resume,
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
41 enable=self.check_running)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
42 self._quit_button = SplashButton('quit.png', 580, 523, shell.quit)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
43 self.add(self._start_button)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
44 self.add(self._resume_button)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
45 self.add(self._quit_button)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
46
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
47 def draw(self, surface):
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
48 surface.blit(self._background, (0, 0))
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
49 self._start_button.draw(surface)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
50 self._resume_button.draw(surface)
a6de33fecb97 Hook up splash screen
Stefano Rivera <stefano@rivera.za.net>
parents: 124
diff changeset
51 self._quit_button.draw(surface)
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
52
19
87f8a46b88af Fix indentation
Neil Muller <neil@dip.sun.ac.za>
parents: 17
diff changeset
53 def start(self):
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
54 self.shell.game_screen.start_game()
24
9d5de13e2ac3 Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 19
diff changeset
55 self.shell.show_screen(self.shell.game_screen)
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
56
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
57 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
58 return self.shell.game_screen.running
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
59
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
60 def resume(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
61 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
62 self.shell.show_screen(self.shell.game_screen)
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
63