Split level scene for game play extensions
[koperkapel.git] / koperkapel / scenes / viewlevel.py
index 8a101df27e1a815d6bca2b9ece97775b2d6a6306..fa3fd997d4a5843bd7b7578434457190738b076e 100644 (file)
@@ -1,31 +1,30 @@
 """Render a level and allow moving the scene"""
 
 from pgzero.constants import keys
-from .level import LevelScene
+from .level import BaseLevelScene
+from .base import MoveViewportEvent
 from ..constants import TILE_SIZE
 
 
-class ViewLevelScene(LevelScene):
+class ViewLevelScene(BaseLevelScene):
     """ Level scene. """
 
-    def __init__(self, level_name):
-        super(ViewLevelScene, self).__init__(level_name)
-        self._pos = (0, 0)
-
-    def draw(self, screen):
-        super(ViewLevelScene, self).draw(screen, self._pos)
-
     def on_key_down(self, key, mod, unicode):
+        offset = None
         if key == keys.DOWN:
-            self._pos = self._pos[0], self._pos[1] + TILE_SIZE
-            return
+            offset = (0, TILE_SIZE)
         elif key == keys.UP:
-            self._pos = self._pos[0], self._pos[1] - TILE_SIZE
-            return
+            offset = (0, -TILE_SIZE)
         elif key == keys.LEFT:
-            self._pos = self._pos[0] - TILE_SIZE, self._pos[1]
-            return
+            offset = (-TILE_SIZE, 0)
         elif key == keys.RIGHT:
-            self._pos = self._pos[0] + TILE_SIZE, self._pos[1]
+            offset = (TILE_SIZE, 0)
+        elif key == keys.S:
+            if self._level_layer == 'floor':
+                self._level_layer = 'tunnels'
+            else:
+                self._level_layer = 'floor'
             return
+        if offset:
+            return [MoveViewportEvent(offset)]
         return super(ViewLevelScene, self).on_key_down(key, mod, unicode)