Mercurial > nagslang
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):