changeset 599:2d2ea51b73ad pyntnclick

Move menu.py and endscreen.py to gamelib. Add default versions for new games
author Neil Muller <neil@dip.sun.ac.za>
date Sat, 11 Feb 2012 18:46:19 +0200
parents c1b5e982809b
children fabce47e542f
files gamelib/endscreen.py gamelib/main.py gamelib/menu.py pyntnclick/data/images/pyntnclick/end.png pyntnclick/data/images/pyntnclick/start.png pyntnclick/data/sources/images/end.xcf pyntnclick/data/sources/images/start.xcf pyntnclick/endscreen.py pyntnclick/gamescreen.py pyntnclick/main.py pyntnclick/menu.py
diffstat 11 files changed, 127 insertions(+), 83 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gamelib/endscreen.py	Sat Feb 11 18:46:19 2012 +0200
@@ -0,0 +1,33 @@
+# endscreen.py
+# 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'
+
+
+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 draw(self, surface):
+        surface.blit(self.background, (0, 0))
+        self._menu_button.draw(surface)
+        self._quit_button.draw(surface)
+
+    def main_menu(self):
+        self.shell.show_screen(self.shell.menu_screen)
--- a/gamelib/main.py	Sat Feb 11 18:31:56 2012 +0200
+++ b/gamelib/main.py	Sat Feb 11 18:46:19 2012 +0200
@@ -1,5 +1,8 @@
 import scenes
 
+from menu import MenuScreen
+from endscreen import EndScreen
+
 from pyntnclick.main import GameDescription
 
 
@@ -7,6 +10,8 @@
 
     INITIAL_SCENE = scenes.INITIAL_SCENE
     SCENE_LIST = scenes.SCENE_LIST
+    MENU_SCREEN = MenuScreen
+    END_SCREEN = EndScreen
 
 
 def main():
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gamelib/menu.py	Sat Feb 11 18:46:19 2012 +0200
@@ -0,0 +1,43 @@
+# menu.py
+# Copyright Boomslang team, 2010 (see COPYING File)
+# Main menu for the game
+
+from albow.screen import Screen
+
+from pyntnclick.widgets import BoomImageButton
+
+
+class SplashButton(BoomImageButton):
+
+    FOLDER = 'splash'
+
+
+class MenuScreen(Screen):
+    def __init__(self, shell, game_description):
+        Screen.__init__(self, shell)
+        self._background = game_description.resource.get_image(
+                ('splash', 'splash.png'))
+        self._start_button = SplashButton('play.png', 16, 523, self.start)
+        self._resume_button = SplashButton('resume.png', 256, 523, self.resume,
+                                           enable=self.check_running)
+        self._quit_button = SplashButton('quit.png', 580, 523, shell.quit)
+        self.add(self._start_button)
+        self.add(self._resume_button)
+        self.add(self._quit_button)
+
+    def draw(self, surface):
+        surface.blit(self._background, (0, 0))
+        self._start_button.draw(surface)
+        self._resume_button.draw(surface)
+        self._quit_button.draw(surface)
+
+    def start(self):
+        self.shell.game_screen.start_game()
+        self.shell.show_screen(self.shell.game_screen)
+
+    def check_running(self):
+        return self.shell.game_screen.running
+
+    def resume(self):
+        if self.shell.game_screen.running:
+            self.shell.show_screen(self.shell.game_screen)
Binary file pyntnclick/data/images/pyntnclick/end.png has changed
Binary file pyntnclick/data/images/pyntnclick/start.png has changed
Binary file pyntnclick/data/sources/images/end.xcf has changed
Binary file pyntnclick/data/sources/images/start.xcf has changed
--- a/pyntnclick/endscreen.py	Sat Feb 11 18:31:56 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-# endscreen.py
-# 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'
-
-
-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 draw(self, surface):
-        surface.blit(self.background, (0, 0))
-        self._menu_button.draw(surface)
-        self._quit_button.draw(surface)
-
-    def main_menu(self):
-        self.shell.show_screen(self.shell.menu_screen)
--- a/pyntnclick/gamescreen.py	Sat Feb 11 18:31:56 2012 +0200
+++ b/pyntnclick/gamescreen.py	Sat Feb 11 18:46:19 2012 +0200
@@ -267,3 +267,29 @@
     def begin_frame(self):
         if self.running:
             self.state_widget.animate()
+
+
+class DefEndScreen(Screen):
+    """A placeholder 'Game Over' screen so people can get started easily"""
+
+    def __init__(self, shell, game_description):
+        Screen.__init__(self, shell)
+
+        self.background = game_description.resource.get_image(
+                ('pyntnclick', 'end.png'))
+
+    def draw(self, surface):
+        surface.blit(self.background, (0, 0))
+
+
+class DefMenuScreen(Screen):
+    """A placeholder Start screen so people can get started easily"""
+
+    def __init__(self, shell, game_description):
+        Screen.__init__(self, shell)
+
+        self.background = game_description.resource.get_image(
+                ('pyntnclick', 'start.png'))
+
+    def draw(self, surface):
+        surface.blit(self.background, (0, 0))
--- a/pyntnclick/main.py	Sat Feb 11 18:31:56 2012 +0200
+++ b/pyntnclick/main.py	Sat Feb 11 18:46:19 2012 +0200
@@ -16,9 +16,7 @@
 from pygame.locals import SWSURFACE
 from albow.shell import Shell
 
-from pyntnclick.menu import MenuScreen
-from pyntnclick.gamescreen import GameScreen
-from pyntnclick.endscreen import EndScreen
+from pyntnclick.gamescreen import GameScreen, DefMenuScreen, DefEndScreen
 from pyntnclick.constants import GameConstants, DEBUG_ENVVAR
 from pyntnclick.resources import Resources
 from pyntnclick.sound import Sound
@@ -29,11 +27,18 @@
 
 
 class MainShell(Shell):
-    def __init__(self, display, game_description):
+    # Should we allow the menu not to be the opening screen?
+    def __init__(self, display, game_description, menu_screen, end_screen):
         Shell.__init__(self, display)
-        self.menu_screen = MenuScreen(self, game_description)
+        if menu_screen:
+            self.menu_screen = menu_screen(self, game_description)
+        else:
+            self.menu_screen = DefMenuScreen(self, game_description)
         self.game_screen = GameScreen(self, game_description)
-        self.end_screen = EndScreen(self, game_description)
+        if end_screen:
+            self.end_screen = end_screen(self, game_description)
+        else:
+            self.end_screen = DefEndScreen(self, game_description)
         self.set_timer(game_description.constants.frame_rate)
         self.show_screen(self.menu_screen)
 
@@ -50,6 +55,13 @@
     # list of game scenes
     SCENE_LIST = None
 
+    # starting menu
+    MENU_SCREEN = None
+
+    # game over screen
+    END_SCREEN = None
+
+
     # resource module
     RESOURCE_MODULE = "Resources"
 
@@ -154,7 +166,8 @@
                     'suspended_sentence24x24.png', basedir='icons'))
             pygame.display.set_caption("Suspended Sentence")
 
-            shell = MainShell(display, self)
+            shell = MainShell(display, self, self.MENU_SCREEN,
+                    self.END_SCREEN)
         try:
             shell.run()
         except KeyboardInterrupt:
--- a/pyntnclick/menu.py	Sat Feb 11 18:31:56 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-# menu.py
-# Copyright Boomslang team, 2010 (see COPYING File)
-# Main menu for the game
-
-from albow.screen import Screen
-
-from pyntnclick.widgets import BoomImageButton
-
-
-class SplashButton(BoomImageButton):
-
-    FOLDER = 'splash'
-
-
-class MenuScreen(Screen):
-    def __init__(self, shell, game_description):
-        Screen.__init__(self, shell)
-        self._background = game_description.resource.get_image(
-                ('splash', 'splash.png'))
-        self._start_button = SplashButton('play.png', 16, 523, self.start)
-        self._resume_button = SplashButton('resume.png', 256, 523, self.resume,
-                                           enable=self.check_running)
-        self._quit_button = SplashButton('quit.png', 580, 523, shell.quit)
-        self.add(self._start_button)
-        self.add(self._resume_button)
-        self.add(self._quit_button)
-
-    def draw(self, surface):
-        surface.blit(self._background, (0, 0))
-        self._start_button.draw(surface)
-        self._resume_button.draw(surface)
-        self._quit_button.draw(surface)
-
-    def start(self):
-        self.shell.game_screen.start_game()
-        self.shell.show_screen(self.shell.game_screen)
-
-    def check_running(self):
-        return self.shell.game_screen.running
-
-    def resume(self):
-        if self.shell.game_screen.running:
-            self.shell.show_screen(self.shell.game_screen)