level fix and robots
[koperkapel.git] / koperkapel / gamelib / enemy_generator.py
index 1329660b1881140768f557e2912c5e0305a018ee..d854128334b5b57d2143a667444a53447b783d3e 100644 (file)
@@ -4,7 +4,7 @@ import os
 from pgzero.actor import Actor
 from pgzero.clock import each_tick
 
-from .enemy_roach import get_enemy_roach
+from .enemy_roach import get_enemy_roach, get_rat, get_robot
 
 class EnemyGenerator(Actor):
     """Generators are currently invisble, but we want the update hook."""
@@ -28,16 +28,27 @@ class EnemyGenerator(Actor):
         if self._time_since_last_update > self.rate:
             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()
+            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):
         self.paused = True