The endless pointlessness of level progression
[koperkapel.git] / koperkapel / loaders / levelloader.py
index 524769535fccd97b87396f056146ac364a352f26..601ea80b3609925d2ad5651ea333381be871970d 100644 (file)
@@ -4,10 +4,11 @@ import json
 
 from pgzero.loaders import ResourceLoader
 
-from ..gamelib.tiles import Wall, Floor, Tunnel, Underground, Grate
+from ..gamelib.tiles import Wall, Floor, Tunnel, Underground, Grate, Exit
 from ..gamelib.level import Level
 from ..gamelib.door import Door
 from ..gamelib.keypad import Keypad
+from ..gamelib.friendlyroach import get_friendly_roach
 
         
 
@@ -34,6 +35,9 @@ class LevelLoader(ResourceLoader):
         self._level.tiles = level_data['tiles']
         self._level.tileset = level_data['tileset']
         self._level.start_pos = level_data["starting pos"]
+        self._level.exit = level_data["exit"]
+        self._level.enemies = []
+        self._level.friends = []
         # Consistency check, so we can assume things are correct
         # in the level renderer
         for row, row_data in enumerate(self._level.tiles):
@@ -60,6 +64,9 @@ class LevelLoader(ResourceLoader):
             for keypad in door_info['keypads']:
                 new_keypad = Keypad(keypad[0], keypad[1], doors)
                 self._level.keypads.append(new_keypad)
+        for pos in level_data['friendly roaches']:
+            roach = get_friendly_roach(pos[0], pos[1])
+            self._level.friends.append(roach)
         return self._level
 
     def _load_tile_images(self):
@@ -72,7 +79,9 @@ class LevelLoader(ResourceLoader):
                     tile['%s image' % layer] = \
                             TILES[tile[layer]['base']].image(neighbors)
                     # Hack this for now
-                    if layer == 'floor' and 'crawl' in tile[layer]['behaviour']:
+                    if self._level.is_exit(x, y):
+                        tile['floor image'] = Exit.image(neighbors)
+                    elif layer == 'floor' and 'crawl' in tile[layer]['behaviour']:
                         tile['floor image'] = Grate.image(neighbors)
                         self._level.grates.append((x, y))