changeset 443:3dab4984cbd7

Redo way of reaching end screen
author Neil Muller <neil@dip.sun.ac.za>
date Sun, 29 Aug 2010 00:24:40 +0200
parents 05d15be39377
children b1e38ac3abb1
files gamelib/endscreen.py gamelib/gamescreen.py gamelib/main.py gamelib/state.py
diffstat 4 files changed, 41 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /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)
+
+
--- 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
--- 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)
 
--- 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):