1 """ Class holding the level info """
3 from .keypad import Keypad
10 self.width = self.height = 0
16 self.start_pos = (0, 0)
20 def get_neighbors(self, x, y):
21 # 4 -connected neighbors
22 return [self.tiles[y][x-1] if x > 0 else None,
23 self.tiles[y][x+1] if x < self.width - 1 else None,
24 self.tiles[y-1][x] if y > 0 else None,
25 self.tiles[y+1][x] if y < self.height- 1 else None,
28 def can_walk(self, x, y, layer):
29 if 'walk' in self.tiles[y][x][layer]['behaviour']:
31 for door in self.doors:
32 if (x, y) == door.game_pos and door.is_closed():
37 def can_fly(self, x, y, layer):
38 if 'fly' in self.tiles[y][x][layer]['behaviour']:
39 for door in self.doors:
40 if (x, y) == door.game_pos and door.is_closed():
46 def can_crawl(self, x, y, layer):
47 return 'crawl' in self.tiles[y][x][layer]['behaviour']
49 def is_keypad(self, x, y):
50 for keypad in self.keypads:
51 if (x, y) == keypad.game_pos:
55 def is_grate(self, x, y):
56 if (x, y) in self.grates:
60 def press_keypad(self, x, y, roaches):
61 for keypad in self.keypads:
62 if (x, y) == keypad.game_pos:
63 keypad.activate(roaches)
65 def get_friends(self):
66 return self._friends[:]
68 def is_on_friend(self, x, y):
69 return (x, y) in [x.game_pos for x in self.friends]
71 def remove_friend(self, x, y):
72 for friend in self.friends[:]:
73 if friend.game_pos == (x, y):
74 self.friends.remove(friend)