changeset 607:f2b1ddcc4986 pyntnclick

Make menu and endscreen work.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 11 Feb 2012 20:34:23 +0200
parents 5d62644288eb
children a25cd1c6335a
files gamelib/endscreen.py gamelib/menu.py pyntnclick/engine.py
diffstat 3 files changed, 33 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/endscreen.py	Sat Feb 11 20:31:25 2012 +0200
+++ b/gamelib/endscreen.py	Sat Feb 11 20:34:23 2012 +0200
@@ -2,32 +2,30 @@
 # Copyright Boomslang team, 2010 (see COPYING File)
 # Victory screen for the game
 
-from albow.screen import Screen
-
-from pyntnclick.widgets import BoomImageButton
-
-
-class EndImageButton(BoomImageButton):
-
-    FOLDER = 'won'
+import pygame.event
+from pygame.locals import QUIT
+from pyntnclick.engine import Screen
+from pyntnclick.widgets.imagebutton import ImageButtonWidget
 
 
 class EndScreen(Screen):
-    def __init__(self, shell, game_description):
-        Screen.__init__(self, shell)
-        self.background = game_description.resource.get_image(
-                ('won', 'won.png'))
-        self._menu_button = EndImageButton('menu.png', 26, 500,
-                action=self.main_menu)
-        self._quit_button = EndImageButton('quit.png', 250, 500,
-                action=shell.quit)
-        self.add(self._menu_button)
-        self.add(self._quit_button)
+    def setup(self):
+        self._background = self.resource.get_image(('won', 'won.png'))
+        self.add_image_button((26, 500), ('won', 'menu.png'), self.main_menu)
+        self.add_image_button((250, 500), ('won', 'quit.png'), self.quit)
 
-    def draw(self, surface):
-        surface.blit(self.background, (0, 0))
-        self._menu_button.draw(surface)
-        self._quit_button.draw(surface)
+    def add_image_button(self, rect, image_name, callback):
+        image = self.resource.get_image(image_name)
+        widget = ImageButtonWidget(rect, image)
+        widget.add_callback('clicked', callback)
+        self.container.add(widget)
 
-    def main_menu(self):
-        self.shell.show_screen(self.shell.menu_screen)
+    def draw_background(self):
+        self.surface.blit(self._background, self.surface.get_rect())
+
+    def main_menu(self, ev, widget):
+        from gamelib.menu import MenuScreen
+        self.change_screen(MenuScreen(self.game_description))
+
+    def quit(self, ev, widget):
+        pygame.event.post(pygame.event.Event(QUIT))
--- a/gamelib/menu.py	Sat Feb 11 20:31:25 2012 +0200
+++ b/gamelib/menu.py	Sat Feb 11 20:34:23 2012 +0200
@@ -2,21 +2,20 @@
 # Copyright Boomslang team, 2010 (see COPYING File)
 # Main menu for the game
 
+import pygame.event
+from pygame.locals import QUIT
 from pyntnclick.engine import Screen
 from pyntnclick.widgets.imagebutton import ImageButtonWidget
 
-import pygame.event
-from pygame.locals import QUIT
-
 
 class MenuScreen(Screen):
     def setup(self):
-        self._background = self.resource.get_image(('splash', 'splash.png'))
+        self._background = self.resource.get_image('splash/splash.png')
 
-        self.add_image_button((16, 523), ('splash', 'play.png'), self.start)
+        self.add_image_button((16, 523), 'splash/play.png', self.start)
         # FIXME: Only show this when check_running:
-        self.add_image_button((256, 523), ('splash', 'resume.png'), self.resume)
-        self.add_image_button((580, 523), ('splash', 'quit.png'), self.quit)
+        self.add_image_button((256, 523), 'splash/resume.png', self.resume)
+        self.add_image_button((580, 523), 'splash/quit.png', self.quit)
 
     def add_image_button(self, rect, image_name, callback):
         image = self.resource.get_image(image_name)
@@ -28,8 +27,8 @@
         self.surface.blit(self._background, self.surface.get_rect())
 
     def start(self, ev, widget):
-        self.shell.game_screen.start_game()
-        self.shell.show_screen(self.shell.game_screen)
+        from gamelib.endscreen import EndScreen
+        self.change_screen(EndScreen(self.game_description))
 
     def check_running(self):
         return self.shell.game_screen.running
--- a/pyntnclick/engine.py	Sat Feb 11 20:31:25 2012 +0200
+++ b/pyntnclick/engine.py	Sat Feb 11 20:34:23 2012 +0200
@@ -87,6 +87,9 @@
         self.container.add(dialog)
         dialog.grab_focus()
 
+    def change_screen(self, new_screen):
+        ScreenChangeEvent.post(new_screen)
+
 
 class UserEvent(object):
     """A user event type allowing subclassing,