Mercurial > pyntnclick
diff pyntnclick/engine.py @ 608:a25cd1c6335a pyntnclick
Pass screens through engine by name
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Sat, 11 Feb 2012 20:57:28 +0200 |
parents | f2b1ddcc4986 |
children | cfc16ded7b34 |
line wrap: on
line diff
--- a/pyntnclick/engine.py Sat Feb 11 20:34:23 2012 +0200 +++ b/pyntnclick/engine.py Sat Feb 11 20:57:28 2012 +0200 @@ -11,14 +11,18 @@ def __init__(self, game_description): self._screen = None self._game_description = game_description + self.screens = {} - def set_screen(self, screen): + def set_screen(self, screen_name): if self._screen is not None: self._screen.on_exit() - self._screen = screen + self._screen = self.screens.get(screen_name, None) if self._screen is not None: self._screen.on_enter() + def add_screen(self, name, screen): + self.screens[name] = screen + def run(self): """Game loop.""" @@ -31,7 +35,7 @@ if ev.type == QUIT: return elif ScreenChangeEvent.matches(ev): - self.set_screen(ev.screen) + self.set_screen(ev.screen_name) else: self._screen.dispatch(ev) surface = pygame.display.get_surface() @@ -87,8 +91,8 @@ self.container.add(dialog) dialog.grab_focus() - def change_screen(self, new_screen): - ScreenChangeEvent.post(new_screen) + def change_screen(self, new_screen_name): + ScreenChangeEvent.post(new_screen_name) class UserEvent(object): @@ -113,5 +117,5 @@ TYPE = "SCREEN_CHANGE" @classmethod - def post(cls, screen): - super(ScreenChangeEvent, cls).post(screen=screen) + def post(cls, screen_name): + super(ScreenChangeEvent, cls).post(screen_name=screen_name)