Make AI destory gates
[erdslangetjie.git] / erdslangetjie / level.py
index fc23cc626238bb965d69eea370098cffad96293f..092ef7bb874840420d44854a438ea8725ae76676 100644 (file)
@@ -229,7 +229,7 @@ class Level(object):
             return True
         if tile == GATE:
             print tile, pos, self._gates[pos]
-            if self._gates[pos] != -1:
+            if self._gates[pos] > 0:
                 return True
         return False
 
@@ -237,11 +237,20 @@ class Level(object):
         return abs(pos1[0] - pos2[0]) + abs(pos1[1] - pos2[1])
 
     def is_gate(self, pos):
+        if not self._in_limits(pos):
+            return False
         return self._data[pos[1]][pos[0]] == GATE
 
     def is_button(self, pos):
+        if not self._in_limits(pos):
+            return False
         return self._data[pos[1]][pos[0]] == BUTTON
 
+    def is_wall(self, pos):
+        if not self._in_limits(pos):
+            return True
+        return self._data[pos[1]][pos[0]] == WALL
+
     def trigger_button(self, pos):
         if not self.is_button(pos):
             return False
@@ -256,20 +265,18 @@ class Level(object):
                 gate_pos = cand
                 mindist = dist
         if gate_pos:
-            self._buttons[pos] == 'pressed'
+            self._buttons[pos] = 'pressed'
             self._gates[gate_pos] = 3  # Raise gate
             self._fix_tile(pos)
             self._fix_tile(gate_pos)
 
     def damage_gate(self, pos):
         if not self.is_gate(pos):
-            return False
+            return
         if self._gates[pos] == -1 or self._gates[pos] == 0:
-            return False
+            return
         self._gates[pos] = self._gates[pos] - 1
-        self._fix_gate_tile(pos)
-        self._changed.append((pos, self.get_single_tile(pos)))
-        return True
+        self._fix_tile(pos)
 
     def get_changed_tiles(self):
         ret = self._changed[:]