1 """ Class holding the level info """
3 from .keypad import Keypad
10 self.width = self.height = 0
16 self.start_pos = (0, 0)
19 self.enemy_generators = []
22 def get_neighbors(self, x, y):
23 # 4 -connected neighbors
24 return [self.tiles[y][x-1] if x > 0 else None,
25 self.tiles[y][x+1] if x < self.width - 1 else None,
26 self.tiles[y-1][x] if y > 0 else None,
27 self.tiles[y+1][x] if y < self.height- 1 else None,
30 def can_walk(self, x, y, layer):
31 if 'walk' in self.tiles[y][x][layer]['behaviour']:
33 for door in self.doors:
34 if (x, y) == door.game_pos and door.is_closed():
39 def can_fly(self, x, y, layer):
40 if 'fly' in self.tiles[y][x][layer]['behaviour']:
41 for door in self.doors:
42 if (x, y) == door.game_pos and door.is_closed():
48 def can_crawl(self, x, y, layer):
49 return 'crawl' in self.tiles[y][x][layer]['behaviour']
51 def is_keypad(self, x, y):
52 for keypad in self.keypads:
53 if (x, y) == keypad.game_pos:
57 def is_grate(self, x, y):
58 if (x, y) in self.grates:
62 def press_keypad(self, x, y, roaches):
63 for keypad in self.keypads:
64 if (x, y) == keypad.game_pos:
65 keypad.activate(roaches)
67 def get_friends(self):
68 return self._friends[:]
70 def is_on_friend(self, x, y):
71 return (x, y) in [x.game_pos for x in self.friends]
73 def remove_friend(self, x, y):
74 for friend in self.friends[:]:
75 if friend.game_pos == (x, y):
76 self.friends.remove(friend)
80 def is_exit(self, x, y):
81 return self.exit and (x, y) == tuple(self.exit["pos"])
83 def get_exit_level(self):
84 return self.exit["next level"]