# HG changeset patch # User Neil Muller # Date 1283034280 -7200 # Node ID 3dab4984cbd7ae1cac7eaf8574a47e0c07915512 # Parent 05d15be3937702e981885eae666087980428e87b Redo way of reaching end screen diff -r 05d15be39377 -r 3dab4984cbd7 gamelib/endscreen.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gamelib/endscreen.py Sun Aug 29 00:24:40 2010 +0200 @@ -0,0 +1,29 @@ +# endscreen.py +# Copyright Boomslang team, 2010 (see COPYING File) +# Victory screen for the game + +from albow.screen import Screen +from albow.controls import Button +from albow.resource import get_image +from albow.layout import Column + + +class EndScreen(Screen): + def __init__(self, shell): + Screen.__init__(self, shell) + self.background = get_image('won', 'won.png') + StartButton = Button('Main Menu', action = self.main_menu) + QuitButton = Button('Quit', action = shell.quit) + self.add(StartButton) + StartButton.rect.bottomleft = (50, 550) + self.add(QuitButton) + QuitButton.rect.bottomleft = (250, 550) + + def draw(self, surface): + surface.blit(self.background, (0,0)) + super(EndScreen, self).draw(surface) + + def main_menu(self): + self.shell.show_screen(self.shell.menu_screen) + + diff -r 05d15be39377 -r 3dab4984cbd7 gamelib/gamescreen.py --- a/gamelib/gamescreen.py Sun Aug 29 00:01:14 2010 +0200 +++ b/gamelib/gamescreen.py Sun Aug 29 00:24:40 2010 +0200 @@ -124,6 +124,9 @@ self.state.set_current_detail(None) self._mouse_move(mouse.get_pos()) + def end_game(self): + self.screen.shell.show_screen(self.screen.shell.end_screen) + class DetailWindow(Widget): def __init__(self, screen): @@ -139,6 +142,9 @@ def close_but(self): self.parent.clear_detail() + def end_game(self): + self.parent.end_game() + def set_image_rect(self, rect): bw = self.border_width self.image_rect = rect diff -r 05d15be39377 -r 3dab4984cbd7 gamelib/main.py --- a/gamelib/main.py Sun Aug 29 00:01:14 2010 +0200 +++ b/gamelib/main.py Sun Aug 29 00:24:40 2010 +0200 @@ -18,6 +18,7 @@ from menu import MenuScreen from gamescreen import GameScreen +from endscreen import EndScreen from constants import SCREEN, FRAME_RATE, FREQ, BITSIZE, CHANNELS, BUFFER, DEBUG from sound import no_sound, disable_sound import state @@ -40,6 +41,7 @@ Shell.__init__(self, display) self.menu_screen = MenuScreen(self) self.game_screen = GameScreen(self) + self.end_screen = EndScreen(self) self.set_timer(FRAME_RATE) self.show_screen(self.menu_screen) diff -r 05d15be39377 -r 3dab4984cbd7 gamelib/state.py --- a/gamelib/state.py Sun Aug 29 00:01:14 2010 +0200 +++ b/gamelib/state.py Sun Aug 29 00:24:40 2010 +0200 @@ -18,7 +18,7 @@ class Result(object): """Result of interacting with a thing""" - def __init__(self, message=None, soundfile=None, detail_view=None, style=None, close_detail=False): + def __init__(self, message=None, soundfile=None, detail_view=None, style=None, close_detail=False, end_game=False): self.message = message self.sound = None if soundfile: @@ -26,6 +26,7 @@ self.detail_view = detail_view self.style = style self.close_detail = close_detail + self.end_game = end_game def process(self, scene_widget): """Helper function to do the right thing with a result object""" @@ -37,6 +38,8 @@ scene_widget.show_detail(self.detail_view) if self.close_detail and hasattr(scene_widget, 'parent') and hasattr(scene_widget.parent, 'clear_detail'): scene_widget.parent.clear_detail() + if self.end_game: + scene_widget.end_game() def handle_result(result, scene_widget):