Make chess puzzle level (Kasparov to F3) winnable.
[naja.git] / naja / engine.py
index 1c6b70ac8a7917871edae10512acfc90e11b80d2..2642feb3481de6407b63ebb02cd58b0a3691afd2 100644 (file)
@@ -2,34 +2,40 @@ import pygame
 import pygame.locals as pgl
 
 from naja.constants import FPS
-from naja.events import SceneChangeEvent, QuitGameEvent
+from naja.events import SceneChangeEvent, QuitGameEvent, LoadGameEvent
+from naja.sound import sound
 
 
 class Engine(object):
-    def __init__(self, surface, scene):
+    def __init__(self, surface, scene, state):
         self._surface = surface
         self._scene = scene
+        self._state = state
 
     def run(self):
         clock = pygame.time.Clock()
         while True:
+            self._surface.fill((0, 0, 0))
             for ev in pygame.event.get():
                 if ev.type == pgl.QUIT or QuitGameEvent.matches(ev):
                     self.quit_game()
                     return
                 elif SceneChangeEvent.matches(ev):
-                    self.change_scene(ev.scene)
+                    self.change_scene(ev.scene_cls)
+                elif LoadGameEvent.matches(ev):
+                    self._state = ev.state
                 else:
                     self._scene.handle_event(ev)
             self._scene.render(self._surface)
             pygame.display.flip()
             clock.tick(FPS)
 
-    def change_scene(self, scene):
+    def change_scene(self, scene_cls):
         self._scene.exit()
-        self._scene = scene
+        self._scene = scene_cls(self._state)
         self._scene.enter()
 
     def quit_game(self):
         self._scene.exit()
+        sound.play_sound('shutdown.ogg', foreground=True)
         self._scene = None