1 """ Engine for moving controll scenes and tranistions between them.
8 import pygame.locals as pgl
10 from .constants import FPS
11 from .events import QuitEvent, SceneChangeEvent
15 def __init__(self, screen, gamestate):
17 self._gamestate = gamestate
20 def set_scene(self, scene):
21 if self._scene is not None:
22 self._scene.exit(self._gamestate)
25 self._scene.enter(self._gamestate)
28 clock = pygame.time.Clock()
31 events = pygame.event.get()
33 if QuitEvent.matches(ev) or ev.type == pgl.QUIT:
36 elif SceneChangeEvent.matches(ev):
37 self.set_scene(ev.scene)
39 self._scene.event(ev, self._gamestate)
41 # Advance time on the world
42 # Time is assumed to flow perfectly, so no dt parameter for now
43 self._scene.tick(self._gamestate)
44 self._scene.render(self._screen, self._gamestate)