X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Flevel.py;h=cfbf45e1118c824f63cddac3294a09c9283419f0;hb=ec6ffa9c6a998de15e5f856756a6efb04c00418b;hp=bcc319a2886d2f5e530d30ff70be6f7f50478a09;hpb=5729b7d89f992ba3d5b3f779ecc1094a48a85459;p=koperkapel.git diff --git a/koperkapel/gamelib/level.py b/koperkapel/gamelib/level.py index bcc319a..cfbf45e 100644 --- a/koperkapel/gamelib/level.py +++ b/koperkapel/gamelib/level.py @@ -1,5 +1,7 @@ """ Class holding the level info """ +import random + class Level(object): @@ -44,6 +46,14 @@ class Level(object): def can_crawl(self, x, y, layer): return 'crawl' in self.tiles[y][x][layer]['behaviour'] + def can_bullet(self, x, y, layer): + if 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 is_keypad(self, x, y): for keypad in self.keypads: if (x, y) == keypad.game_pos: @@ -84,3 +94,34 @@ class Level(object): def get_exit_level(self): return self.exit["next level"] + + def enemy_at(self, x, y): + for enemy in self.enemies: + if (x, y) == enemy.game_pos: + return True + return False + + def get_enemy(self, x, y): + for enemy in self.enemies: + if (x, y) == enemy.game_pos: + return enemy + return None + + def remove_enemy(self, enemy): + self.enemies.remove(enemy) + for generator in self.enemy_generators: + generator.killed(enemy) + + def add_enemy(self, enemy, x, y): + """Add an enemy to an empty floor space near x, y""" + added = False + while not added: + if self.can_walk(x, y, 'floor'): + if not self.friend_at(x, y): + if not self.enemy_at(x, y): + added = True + enemy.game_pos = (x, y) + self.enemies.append(enemy) + added = True + x += random.randint(-1, 1) + y += random.randint(-1, 1)