1 """ Class holding the level info """
3 from .keypad import Keypad
10 self.width = self.height = 0
16 self.start_pos = (0, 0)
21 def get_neighbors(self, x, y):
22 # 4 -connected neighbors
23 return [self.tiles[y][x-1] if x > 0 else None,
24 self.tiles[y][x+1] if x < self.width - 1 else None,
25 self.tiles[y-1][x] if y > 0 else None,
26 self.tiles[y+1][x] if y < self.height- 1 else None,
29 def can_walk(self, x, y, layer):
30 if 'walk' in self.tiles[y][x][layer]['behaviour']:
32 for door in self.doors:
33 if (x, y) == door.game_pos and door.is_closed():
38 def can_fly(self, x, y, layer):
39 if 'fly' in self.tiles[y][x][layer]['behaviour']:
40 for door in self.doors:
41 if (x, y) == door.game_pos and door.is_closed():
47 def can_crawl(self, x, y, layer):
48 return 'crawl' in self.tiles[y][x][layer]['behaviour']
50 def is_keypad(self, x, y):
51 for keypad in self.keypads:
52 if (x, y) == keypad.game_pos:
56 def is_grate(self, x, y):
57 if (x, y) in self.grates:
61 def press_keypad(self, x, y, roaches):
62 for keypad in self.keypads:
63 if (x, y) == keypad.game_pos:
64 keypad.activate(roaches)
66 def get_friends(self):
67 return self._friends[:]
69 def is_on_friend(self, x, y):
70 return (x, y) in [x.game_pos for x in self.friends]
72 def remove_friend(self, x, y):
73 for friend in self.friends[:]:
74 if friend.game_pos == (x, y):
75 self.friends.remove(friend)
79 def is_exit(self, x, y):
80 return self.exit and (x, y) == tuple(self.exit["pos"])
82 def get_exit_level(self):
83 return self.exit["next level"]