Advance time
[tabakrolletjie.git] / tabakrolletjie / engine.py
index 8ee5fc96a43c5a8746c62fa653893a5d9ca34c15..4dac1ddb5273fa09c4208e6e1389d513a3dcabbd 100644 (file)
@@ -8,6 +8,7 @@ import pygame.time
 import pygame.locals as pgl
 
 from .constants import FPS
+from .events import QuitEvent, SceneChangeEvent
 
 
 class Engine(object):
@@ -20,7 +21,8 @@ class Engine(object):
         if self._scene is not None:
             self._scene.exit(self._gamestate)
         self._scene = scene
-        self._scene.enter(self._gamestate)
+        if scene is not None:
+            self._scene.enter(self._gamestate)
 
     def run(self):
         clock = pygame.time.Clock()
@@ -28,12 +30,17 @@ class Engine(object):
         while True:
             events = pygame.event.get()
             for ev in events:
-                if ev.type == pgl.QUIT:
+                if QuitEvent.matches(ev) or ev.type == pgl.QUIT:
+                    self.set_scene(None)
                     return
+                elif SceneChangeEvent.matches(ev):
+                    self.set_scene(ev.scene)
                 else:
                     self._scene.event(ev, self._gamestate)
 
+            # Advance time on the world
+            # Time is assumed to flow perfectly, so no dt parameter for now
+            self._scene.tick(self._gamestate)
             self._scene.render(self._screen, self._gamestate)
             pygame.display.flip()
-
             clock.tick(FPS)