diff nagslang/enemies.py @ 385:51deb78cae52

Use a result object to get new drawables back to the area
author Stefano Rivera <stefano@rivera.za.net>
date Fri, 06 Sep 2013 23:58:15 +0200
parents 024304f6d068
children 866cdc74b26a
line wrap: on
line diff
--- a/nagslang/enemies.py	Fri Sep 06 23:47:44 2013 +0200
+++ b/nagslang/enemies.py	Fri Sep 06 23:58:15 2013 +0200
@@ -9,7 +9,8 @@
 from nagslang.constants import (COLLISION_TYPE_ENEMY, COLLISION_TYPE_FURNITURE,
                                 ACID_SPEED, ACID_DAMAGE, ZORDER_MID)
 from nagslang.events import EnemyDeathEvent, FireEvent
-from nagslang.game_object import GameObject, SingleShapePhysicser, make_body
+from nagslang.game_object import (GameObject, SingleShapePhysicser, Result,
+                                  make_body)
 from nagslang.mutators import FLIP_H
 from nagslang.resources import resources
 from nagslang.utils import vec_with_length
@@ -68,9 +69,8 @@
 
     def lose_health(self, amount):
         self.health -= amount
-        if self.health < 0:
+        if self.health <= 0:
             self.physicser.remove_from_space()
-            self.remove = True
             EnemyDeathEvent.post(self.physicser.position, self.enemy_type)
 
     def set_direction(self, dx, dy):
@@ -125,6 +125,11 @@
         y_step = random.choice([-1, 0, 1])
         return x_step, y_step
 
+    def update(self, dt):
+        super(Enemy, self).update(dt)
+        if self.health <= 0:
+            return Result(remove=[self])
+
 
 class DeadEnemy(GameObject):
     def __init__(self, space, world, position, enemy_type='A'):
@@ -194,7 +199,7 @@
             self._switch_direction()
         self.set_direction(x_step, y_step)
         self.ranged_attack(300, ACID_SPEED, ACID_DAMAGE, 'acid', 0.2)
-        super(PatrollingAlien, self).update(dt)
+        return super(PatrollingAlien, self).update(dt)
 
     @classmethod
     def requires(cls):
@@ -250,7 +255,7 @@
         self.ranged_attack(300, ACID_SPEED, ACID_DAMAGE, 'acid', 0.2)
         dx, dy = self._calc_movement()
         self.set_direction(dx, dy)
-        super(ChargingAlien, self).update(dt)
+        return super(ChargingAlien, self).update(dt)
 
     @classmethod
     def requires(cls):
@@ -290,8 +295,8 @@
             return self.greedy_move(target)
 
     def update(self, dt):
-        super(RunAndGunAlien, self).update(dt)
         self.count += 1
+        return super(RunAndGunAlien, self).update(dt)
 
     @classmethod
     def requires(cls):