Orientate the doors
[koperkapel.git] / koperkapel / loaders / levelloader.py
index 4bc24db683502361317ff4c0b697f6ad603af6f1..9bb85e41ebf89fd57084d00cdd7f01522e318d23 100644 (file)
@@ -4,8 +4,10 @@ import json
 
 from pgzero.loaders import ResourceLoader
 
-from ..gamelib.tiles import Wall, Floor, Tunnel, Underground
+from ..gamelib.tiles import Wall, Floor, Tunnel, Underground, Grate
 from ..gamelib.level import Level
+from ..gamelib.door import Door
+from ..gamelib.keypad import Keypad
 
         
 
@@ -40,6 +42,23 @@ class LevelLoader(ResourceLoader):
         for tile in TILES.values():
             tile.TILESET = self._level.tileset
         self._load_tile_images()
+        for door_info in level_data['door_info']:
+            # Create the doors first
+            doors = []
+            for door in door_info['doors']:
+                x, y = door
+                # is this the right check
+                if self._level.can_walk(x + 1, y, 'floor') and self._level.can_walk(x - 1, y, 'floor'):
+                    # vertical door
+                    angle = 90
+                else:
+                    angle = 0
+                new_door = Door(x, y, angle)
+                self._level.doors.append(new_door)
+            # Add the keypads
+            for keypad in door_info['keypads']:
+                new_keypad = Keypad(keypad[0], keypad[1], doors)
+                self._level.keypads.append(new_keypad)
         return self._level
 
     def _load_tile_images(self):
@@ -51,6 +70,10 @@ class LevelLoader(ResourceLoader):
                     neighbors = [x[layer] if x else None for x in neighborhood]
                     tile['%s image' % layer] = \
                             TILES[tile[layer]['base']].image(neighbors)
+                    # Hack this for now
+                    if layer == 'floor' and 'crawl' in tile[layer]['behaviour']:
+                        print('Here')
+                        tile['floor image'] = Grate.image(neighbors)
 
 
 levels = LevelLoader('levels')