Enemies appear
[koperkapel.git] / koperkapel / gamelib / enemy_generator.py
index 3003064c8ae4a6f9e6b11bea7499e3c4305b70a3..1329660b1881140768f557e2912c5e0305a018ee 100644 (file)
@@ -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,8 +26,18 @@ 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)
-            self._time_since_last_update = 0
+            if len(self._made_enemies) < self.max_enemies:
+                self._make_enemy()
+
+    def _make_enemy(self):
+        if self.enemy_type == 'roach':
+            roach = get_enemy_roach()
+            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)
 
     def pause(self):
         self.paused = True