diff pyntnclick/main.py @ 614:974cc69d3762 pyntnclick

Special cases aren't special enough to be named special.
author Simon Cross <hodgestar+bzr@gmail.com>
date Sat, 11 Feb 2012 21:22:24 +0200
parents 44d4e3020874
children b2c2b6f56291
line wrap: on
line diff
--- 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?