Able to consume items.
[koperkapel.git] / koperkapel / gamelib / level.py
index a8fe447494f64a6c7e3e5b04f046696f3cb90036..bcc319a2886d2f5e530d30ff70be6f7f50478a09 100644 (file)
@@ -1,8 +1,5 @@
 """ Class holding the level info """
 
-from .keypad import Keypad
-from .door import Door
-
 
 class Level(object):
 
@@ -14,14 +11,17 @@ class Level(object):
         self.grates = []
         self.tileset = None
         self.start_pos = (0, 0)
+        self.exit = None
+        self.enemies = []
+        self.enemy_generators = []
+        self.friends = []
 
     def get_neighbors(self, x, y):
         # 4 -connected neighbors
         return [self.tiles[y][x-1] if x > 0 else None,
                 self.tiles[y][x+1] if x < self.width - 1 else None,
                 self.tiles[y-1][x] if y > 0 else None,
-                self.tiles[y+1][x] if y < self.height- 1 else None,
-               ]
+                self.tiles[y+1][x] if y < self.height - 1 else None]
 
     def can_walk(self, x, y, layer):
         if 'walk' in self.tiles[y][x][layer]['behaviour']:
@@ -59,3 +59,28 @@ class Level(object):
         for keypad in self.keypads:
             if (x, y) == keypad.game_pos:
                 keypad.activate(roaches)
+
+    def get_friends(self):
+        return self._friends[:]
+
+    def friend_at(self, x, y):
+        for f in self.friends:
+            if f.game_pos == (x, y):
+                return f
+
+    def remove_friend(self, friend):
+        self.friends.remove(friend)
+
+    def item_at(self, x, y):
+        for i in self.items:
+            if i.game_pos == (x, y):
+                return i
+
+    def remove_item(self, item):
+        self.items.remove(item)
+
+    def is_exit(self, x, y):
+        return self.exit and (x, y) == tuple(self.exit["pos"])
+
+    def get_exit_level(self):
+        return self.exit["next level"]