+ 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)
+
+ def get_friends(self):
+ return self._friends[:]
+
+ def is_on_friend(self, x, y):
+ return (x, y) in [x.game_pos for x in self.friends]
+
+ def remove_friend(self, x, y):
+ for friend in self.friends[:]:
+ if friend.game_pos == (x, y):
+ self.friends.remove(friend)
+ return friend
+ return None
+
+ 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"]