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