comparison 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
comparison
equal deleted inserted replaced
613:44d4e3020874 614:974cc69d3762
14 14
15 import pygame 15 import pygame
16 from pygame.locals import SWSURFACE 16 from pygame.locals import SWSURFACE
17 17
18 from pyntnclick.engine import Engine 18 from pyntnclick.engine import Engine
19 from pyntnclick.gamescreen import DefMenuScreen, DefEndScreen 19 from pyntnclick.gamescreen import DefMenuScreen, DefEndScreen, GameScreen
20 from pyntnclick.constants import GameConstants, DEBUG_ENVVAR 20 from pyntnclick.constants import GameConstants, DEBUG_ENVVAR
21 from pyntnclick.resources import Resources 21 from pyntnclick.resources import Resources
22 from pyntnclick.sound import Sound 22 from pyntnclick.sound import Sound
23 from pyntnclick import state 23 from pyntnclick import state
24 24
37 37
38 # list of game scenes 38 # list of game scenes
39 SCENE_LIST = None 39 SCENE_LIST = None
40 40
41 # starting menu 41 # starting menu
42 SPECIAL_SCREENS = { 42 SCREENS = {
43 'menu': DefMenuScreen, 43 'menu': DefMenuScreen,
44 'end': DefEndScreen, 44 'end': DefEndScreen,
45 } 45 }
46 46
47 START_SCREEN = 'menu' 47 START_SCREEN = 'menu'
48 48
49 # resource module 49 # resource module
50 RESOURCE_MODULE = "Resources" 50 RESOURCE_MODULE = "Resources"
53 if self.INITIAL_SCENE is None: 53 if self.INITIAL_SCENE is None:
54 raise GameDescriptionError("A game must have an initial scene.") 54 raise GameDescriptionError("A game must have an initial scene.")
55 if not self.SCENE_LIST: 55 if not self.SCENE_LIST:
56 raise GameDescriptionError("A game must have a non-empty list" 56 raise GameDescriptionError("A game must have a non-empty list"
57 " of scenes.") 57 " of scenes.")
58 if 'game' in self.SCREENS:
59 raise GameDescriptionError("The 'game' screen is reserved for the"
60 " game itself.")
58 self._initial_scene = self.INITIAL_SCENE 61 self._initial_scene = self.INITIAL_SCENE
59 self._scene_list = self.SCENE_LIST 62 self._scene_list = self.SCENE_LIST
60 self._resource_module = self.RESOURCE_MODULE 63 self._resource_module = self.RESOURCE_MODULE
61 self._debug_rects = False 64 self._debug_rects = False
65 self._screens = self.SCREENS.copy()
66 self._screens['game'] = GameScreen
62 self.resource = Resources(self._resource_module) 67 self.resource = Resources(self._resource_module)
63 self.sound = Sound(self.resource) 68 self.sound = Sound(self.resource)
64 self.constants = self.game_constants() 69 self.constants = self.game_constants()
65 self.debug_options = [] 70 self.debug_options = []
66 71
150 'suspended_sentence24x24.png', basedir='icons')) 155 'suspended_sentence24x24.png', basedir='icons'))
151 pygame.display.set_caption("Suspended Sentence") 156 pygame.display.set_caption("Suspended Sentence")
152 157
153 self.engine = Engine(self) 158 self.engine = Engine(self)
154 # Initialize the special screens in the engine 159 # Initialize the special screens in the engine
155 for name, cls in self.SPECIAL_SCREENS.iteritems(): 160 for name, cls in self._screens.iteritems():
156 screen = cls(self) 161 screen = cls(self)
157 self.engine.add_screen(name, screen) 162 self.engine.add_screen(name, screen)
158 # Should we allow the menu not to be the opening screen? 163 # Should we allow the menu not to be the opening screen?
159 self.engine.set_screen(self.START_SCREEN) 164 self.engine.set_screen(self.START_SCREEN)
160 try: 165 try: