Mercurial > pyntnclick
annotate gamelib/menu.py @ 655:c77d6aa29bee pyntnclick
Some code to kinda demonstrate the ever so cunning state handling plan
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Sun, 12 Feb 2012 13:56:59 +0200 |
parents | fdc63049b08c |
children | f67bc162d69e |
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) |
609
f20262b41cbf
Remove remnants of albow from menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
608
diff
changeset
|
16 if self.check_running(): |
f20262b41cbf
Remove remnants of albow from menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
608
diff
changeset
|
17 self.add_image_button((256, 523), '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) |
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 | 28 |
605
ac3690c299e6
Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents:
600
diff
changeset
|
29 def start(self, ev, widget): |
619 | 30 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
|
31 self.change_screen('game') |
17 | 32 |
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
|
33 def check_running(self): |
609
f20262b41cbf
Remove remnants of albow from menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
608
diff
changeset
|
34 # TODO: Implement this magic. |
f20262b41cbf
Remove remnants of albow from menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
608
diff
changeset
|
35 return False |
17 | 36 |
605
ac3690c299e6
Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents:
600
diff
changeset
|
37 def resume(self, ev, widget): |
609
f20262b41cbf
Remove remnants of albow from menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
608
diff
changeset
|
38 # TODO: Implement this magic. |
f20262b41cbf
Remove remnants of albow from menu.
Jeremy Thurgood <firxen@gmail.com>
parents:
608
diff
changeset
|
39 pass |
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
|
40 |
605
ac3690c299e6
Callbacks take 3 arguments
Stefano Rivera <stefano@rivera.za.net>
parents:
600
diff
changeset
|
41 def quit(self, ev, widget): |
606 | 42 pygame.event.post(pygame.event.Event(QUIT)) |