# HG changeset patch # User Simon Cross # Date 1328988144 -7200 # Node ID 974cc69d37625015aeb9674e112c45f56429d941 # Parent 44d4e302087426fe9fb09edcf4df23997ec64b5c Special cases aren't special enough to be named special. diff -r 44d4e3020874 -r 974cc69d3762 gamelib/main.py --- a/gamelib/main.py Sat Feb 11 21:18:41 2012 +0200 +++ b/gamelib/main.py Sat Feb 11 21:22:24 2012 +0200 @@ -10,7 +10,7 @@ INITIAL_SCENE = scenes.INITIAL_SCENE SCENE_LIST = scenes.SCENE_LIST - SPECIAL_SCREENS = { + SCREENS = { 'menu': MenuScreen, 'end': EndScreen, } diff -r 44d4e3020874 -r 974cc69d3762 gamelib/menu.py --- a/gamelib/menu.py Sat Feb 11 21:18:41 2012 +0200 +++ b/gamelib/menu.py Sat Feb 11 21:22:24 2012 +0200 @@ -27,7 +27,7 @@ self.surface.blit(self._background, self.surface.get_rect()) def start(self, ev, widget): - self.change_screen(self.game_description.INITIAL_SCENE) + self.change_screen('game') def check_running(self): # TODO: Implement this magic. diff -r 44d4e3020874 -r 974cc69d3762 pyntnclick/gamescreen.py --- a/pyntnclick/gamescreen.py Sat Feb 11 21:18:41 2012 +0200 +++ b/pyntnclick/gamescreen.py Sat Feb 11 21:22:24 2012 +0200 @@ -204,9 +204,8 @@ class GameScreen(Screen, CursorWidget): - def __init__(self, shell, game_description): + def __init__(self, game_description): CursorWidget.__init__(self, self) - Screen.__init__(self, shell) self.running = False self.create_initial_state = game_description.initial_state diff -r 44d4e3020874 -r 974cc69d3762 pyntnclick/main.py --- a/pyntnclick/main.py Sat Feb 11 21:18:41 2012 +0200 +++ b/pyntnclick/main.py Sat Feb 11 21:22:24 2012 +0200 @@ -16,7 +16,7 @@ from pygame.locals import SWSURFACE from pyntnclick.engine import Engine -from pyntnclick.gamescreen import DefMenuScreen, DefEndScreen +from pyntnclick.gamescreen import DefMenuScreen, DefEndScreen, GameScreen from pyntnclick.constants import GameConstants, DEBUG_ENVVAR from pyntnclick.resources import Resources from pyntnclick.sound import Sound @@ -39,10 +39,10 @@ SCENE_LIST = None # starting menu - SPECIAL_SCREENS = { - 'menu': DefMenuScreen, - 'end': DefEndScreen, - } + SCREENS = { + 'menu': DefMenuScreen, + 'end': DefEndScreen, + } START_SCREEN = 'menu' @@ -55,10 +55,15 @@ if not self.SCENE_LIST: raise GameDescriptionError("A game must have a non-empty list" " of scenes.") + if 'game' in self.SCREENS: + raise GameDescriptionError("The 'game' screen is reserved for the" + " game itself.") self._initial_scene = self.INITIAL_SCENE self._scene_list = self.SCENE_LIST self._resource_module = self.RESOURCE_MODULE self._debug_rects = False + self._screens = self.SCREENS.copy() + self._screens['game'] = GameScreen self.resource = Resources(self._resource_module) self.sound = Sound(self.resource) self.constants = self.game_constants() @@ -152,7 +157,7 @@ self.engine = Engine(self) # Initialize the special screens in the engine - for name, cls in self.SPECIAL_SCREENS.iteritems(): + for name, cls in self._screens.iteritems(): screen = cls(self) self.engine.add_screen(name, screen) # Should we allow the menu not to be the opening screen?