X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Fenemy_generator.py;h=b5a1dd40969f363f9ab25dec2f1f6b1c0a6a8dbc;hb=9e66c7b17935e886b9fbed0704727aacda3b0c38;hp=3003064c8ae4a6f9e6b11bea7499e3c4305b70a3;hpb=55653b221b6c5ca3c12cdb27412a6773f87c4448;p=koperkapel.git diff --git a/koperkapel/gamelib/enemy_generator.py b/koperkapel/gamelib/enemy_generator.py index 3003064..b5a1dd4 100644 --- a/koperkapel/gamelib/enemy_generator.py +++ b/koperkapel/gamelib/enemy_generator.py @@ -4,17 +4,21 @@ import os from pgzero.actor import Actor from pgzero.clock import each_tick +from .enemy_roach import get_enemy_roach + class EnemyGenerator(Actor): """Generators are currently invisble, but we want the update hook.""" - def __init__(self, info): + def __init__(self, info, level): self.gen_pos = info['pos'] + self.level = level self.enemy_type = info['type'] self.rate = info['rate'] self.max_enemies = info['max'] self._time_since_last_update = 0 self.paused = False each_tick(self.update) + self._made_enemies = [] super().__init__(os.path.join('weapons', 'blank')) def update(self, dt): @@ -22,7 +26,20 @@ class EnemyGenerator(Actor): return self._time_since_last_update += dt if self._time_since_last_update > self.rate: - print('A horrible monster (%s) appears' % self.enemy_type, self.gen_pos) + if len(self._made_enemies) < self.max_enemies: + self._make_enemy() + self._time_since_last_update = 0 + + def _make_enemy(self): + if self.enemy_type == 'roach': + roach = get_enemy_roach(self.level) + self._made_enemies.append(roach) + self.level.add_enemy(roach, *self.gen_pos) + + def killed(self, enemy): + if enemy in self._made_enemies: + self._made_enemies.remove(enemy) + # Delay next respawn so we don't flood the player with enemies self._time_since_last_update = 0 def pause(self):