# HG changeset patch # User Jeremy Thurgood # Date 1328985263 -7200 # Node ID f2b1ddcc498667611aa20bf3140a7f62baa1e979 # Parent 5d62644288eba01a953bccd0ae80520c70f85c66 Make menu and endscreen work. diff -r 5d62644288eb -r f2b1ddcc4986 gamelib/endscreen.py --- 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)) diff -r 5d62644288eb -r f2b1ddcc4986 gamelib/menu.py --- 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 diff -r 5d62644288eb -r f2b1ddcc4986 pyntnclick/engine.py --- 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,