Doors can open (and also close)
[koperkapel.git] / koperkapel / gamelib / level.py
index 44dd0525ce8a49003cb18a17ef33f0e72106a1e8..a8fe447494f64a6c7e3e5b04f046696f3cb90036 100644 (file)
@@ -1,13 +1,19 @@
 """ Class holding the level info """
 
+from .keypad import Keypad
+from .door import Door
+
 
 class Level(object):
 
     def __init__(self):
         self.width = self.height = 0
         self.tiles = []
+        self.keypads = []
+        self.doors = []
+        self.grates = []
         self.tileset = None
-        self.start_pos = None
+        self.start_pos = (0, 0)
 
     def get_neighbors(self, x, y):
         # 4 -connected neighbors
@@ -18,7 +24,38 @@ class Level(object):
                ]
 
     def can_walk(self, x, y, layer):
-        return 'walk' in self.tiles[y][x][layer]['behaviour']
+        if 'walk' in self.tiles[y][x][layer]['behaviour']:
+            # check doors
+            for door in self.doors:
+                if (x, y) == door.game_pos and door.is_closed():
+                    return False
+            return True
+        return False
 
     def can_fly(self, x, y, layer):
-        return 'fly' in self.tiles[y][x][layer]['behaviour']
+        if 'fly' in self.tiles[y][x][layer]['behaviour']:
+            for door in self.doors:
+                if (x, y) == door.game_pos and door.is_closed():
+                    return False
+            return True
+
+        return False
+
+    def can_crawl(self, x, y, layer):
+        return 'crawl' in self.tiles[y][x][layer]['behaviour']
+
+    def is_keypad(self, x, y):
+        for keypad in self.keypads:
+            if (x, y) == keypad.game_pos:
+                return True
+        return False
+
+    def is_grate(self, x, y):
+        if (x, y) in self.grates:
+            return True
+        return False
+
+    def press_keypad(self, x, y, roaches):
+        for keypad in self.keypads:
+            if (x, y) == keypad.game_pos:
+                keypad.activate(roaches)