from pgzero.actor import Actor
from pgzero.clock import each_tick
+from .enemy_roach import get_enemy_roach, get_rat, get_robot
+
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):
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)
+ elif self.enemy_type == 'rat':
+ roach = get_rat(self.level)
+ self._made_enemies.append(roach)
+ self.level.add_enemy(roach, *self.gen_pos)
+ elif self.enemy_type == 'robot':
+ roach = get_robot(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):