Add rendering to scenes and fix handle_event.
[naja.git] / naja / engine.py
index d509ec20e2e914e958b172380c2f3842b8d6648c..7529efd357b6c47d0ced7970d45b12476ce59bb8 100644 (file)
@@ -1,15 +1,27 @@
 import pygame
 import pygame.locals as pgl
 
+from naja.events import SceneChangeEvent
+
 
 class Engine(object):
-    def __init__(self, surface):
+    def __init__(self, surface, scene):
         self._surface = surface
+        self._scene = scene
 
     def run(self):
         while True:
             for ev in pygame.event.get():
                 if ev.type == pgl.QUIT:
                     return
-            # TODO: work
+                elif SceneChangeEvent.matches(ev):
+                    self.change_scene(ev.scene)
+                else:
+                    self._scene.handle_event(ev)
+            self._scene.render(self._surface)
             pygame.display.flip()
+
+    def change_scene(self, scene):
+        self._scene.exit()
+        self._scene = scene
+        self._scene.enter()