# HG changeset patch # User Stefano Rivera # Date 1378507329 -7200 # Node ID 866cdc74b26a101485cc09851400c516c9c9313f # Parent 52c94435e38bffbc1b09052479821d560d756e4a Use Result to handle enemy death (but keep the event for accounting purposes) diff -r 52c94435e38b -r 866cdc74b26a nagslang/enemies.py --- a/nagslang/enemies.py Sat Sep 07 00:34:00 2013 +0200 +++ b/nagslang/enemies.py Sat Sep 07 00:42:09 2013 +0200 @@ -8,7 +8,7 @@ from nagslang import render from nagslang.constants import (COLLISION_TYPE_ENEMY, COLLISION_TYPE_FURNITURE, ACID_SPEED, ACID_DAMAGE, ZORDER_MID) -from nagslang.events import EnemyDeathEvent, FireEvent +from nagslang.events import FireEvent, EnemyDeathEvent from nagslang.game_object import (GameObject, SingleShapePhysicser, Result, make_body) from nagslang.mutators import FLIP_H @@ -70,8 +70,8 @@ def lose_health(self, amount): self.health -= amount if self.health <= 0: + EnemyDeathEvent.post() self.physicser.remove_from_space() - EnemyDeathEvent.post(self.physicser.position, self.enemy_type) def set_direction(self, dx, dy): vec = vec_with_length((dx, dy), self.impulse_factor) @@ -128,7 +128,10 @@ def update(self, dt): super(Enemy, self).update(dt) if self.health <= 0: - return Result(remove=[self]) + return Result( + add=[DeadEnemy(self.get_space(), self.world, + self.physicser.position, self.enemy_type)], + remove=[self]) class DeadEnemy(GameObject): diff -r 52c94435e38b -r 866cdc74b26a nagslang/events.py --- a/nagslang/events.py Sat Sep 07 00:34:00 2013 +0200 +++ b/nagslang/events.py Sat Sep 07 00:42:09 2013 +0200 @@ -56,9 +56,8 @@ class EnemyDeathEvent(UserEvent): @classmethod - def post(cls, position, enemy_type): - super(EnemyDeathEvent, cls).post(position=position, - enemy_type=enemy_type) + def post(cls): + super(EnemyDeathEvent, cls).post() class ClawEvent(UserEvent): diff -r 52c94435e38b -r 866cdc74b26a nagslang/screens/area.py --- a/nagslang/screens/area.py Sat Sep 07 00:34:00 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 00:42:09 2013 +0200 @@ -8,9 +8,8 @@ COLLISION_TYPE_WALL, COLLISION_TYPE_PLAYER, CALLBACK_COLLIDERS, COLLISION_TYPE_FURNITURE, COLLISION_TYPE_WEREWOLF_ATTACK, CMD_TOGGLE_FORM, CMD_ACTION) -from nagslang.enemies import DeadEnemy from nagslang.events import ( - ScreenChange, DoorEvent, FireEvent, EnemyDeathEvent, ClawEvent) + ScreenChange, DoorEvent, EnemyDeathEvent, FireEvent, ClawEvent) from nagslang.level import Level from nagslang.screens.base import Screen from nagslang.game_object import Bullet, ClawAttack @@ -185,9 +184,6 @@ self._drawables.add(bullet) elif EnemyDeathEvent.matches(ev): self.world.kills += 1 - dead_enemy = DeadEnemy(self.space, self.world, ev.position, - ev.enemy_type) - self._drawables.add(dead_enemy) elif ClawEvent.matches(ev): claw_attack = ClawAttack(self.space, ev.source, ev.vector, ev.damage)