Rework scenes and allow the user to quit.
[tabakrolletjie.git] / tabakrolletjie / engine.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8ee5fc96a43c5a8746c62fa653893a5d9ca34c15 100644 (file)
@@ -0,0 +1,39 @@
+""" Engine for moving controll scenes and tranistions between them.
+"""
+
+import pygame.display
+import pygame.event
+import pygame.time
+
+import pygame.locals as pgl
+
+from .constants import FPS
+
+
+class Engine(object):
+    def __init__(self, screen, gamestate):
+        self._screen = screen
+        self._gamestate = gamestate
+        self._scene = None
+
+    def set_scene(self, scene):
+        if self._scene is not None:
+            self._scene.exit(self._gamestate)
+        self._scene = scene
+        self._scene.enter(self._gamestate)
+
+    def run(self):
+        clock = pygame.time.Clock()
+
+        while True:
+            events = pygame.event.get()
+            for ev in events:
+                if ev.type == pgl.QUIT:
+                    return
+                else:
+                    self._scene.event(ev, self._gamestate)
+
+            self._scene.render(self._screen, self._gamestate)
+            pygame.display.flip()
+
+            clock.tick(FPS)