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 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.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.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):
         # 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 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):
         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
                     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))
 
                         tile['floor image'] = Grate.image(neighbors)
                         self._level.grates.append((x, y))