Mercurial > boomslang
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)
--- 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)