Mercurial > nagslang
diff nagslang/screens/area.py @ 393:8d961e05b7b6
Use Result to handle firing
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 07 Sep 2013 01:04:01 +0200 |
parents | 866cdc74b26a |
children | 76f053cf2322 |
line wrap: on
line diff
--- a/nagslang/screens/area.py Sat Sep 07 01:03:46 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 01:04:01 2013 +0200 @@ -8,11 +8,10 @@ COLLISION_TYPE_WALL, COLLISION_TYPE_PLAYER, CALLBACK_COLLIDERS, COLLISION_TYPE_FURNITURE, COLLISION_TYPE_WEREWOLF_ATTACK, CMD_TOGGLE_FORM, CMD_ACTION) -from nagslang.events import ( - ScreenChange, DoorEvent, EnemyDeathEvent, FireEvent, ClawEvent) +from nagslang.events import ScreenChange, DoorEvent, EnemyDeathEvent, ClawEvent from nagslang.level import Level from nagslang.screens.base import Screen -from nagslang.game_object import Bullet, ClawAttack +from nagslang.game_object import ClawAttack from nagslang.sound import sound @@ -178,10 +177,6 @@ return # else we're teleporting within the screen, and just the # position change is enough - elif FireEvent.matches(ev): - bullet = Bullet(self.space, ev.source, ev.impulse, ev.damage, - ev.bullet_type, ev.source_collision_type) - self._drawables.add(bullet) elif EnemyDeathEvent.matches(ev): self.world.kills += 1 elif ClawEvent.matches(ev): @@ -233,18 +228,20 @@ dx, dy = self.keys.get_direction() self.protagonist.set_direction(dx, dy) if self.keys.is_attacking(): - self.protagonist.handle_attack_key_down() + self._handle_result(self.protagonist.handle_attack_key_down()) def tick(self, seconds): super(AreaScreen, self).tick(seconds) self.tick_protagonist() for drawable in self._drawables: - result = drawable.update(seconds) - if result is not None: - for new_drawable in result.add: - self._drawables.add(new_drawable) - for old_drawable in result.remove: - self._drawables.remove(old_drawable) + self._handle_result(drawable.update(seconds)) + + def _handle_result(self, result): + if result is not None: + for drawable in result.add: + self._drawables.add(drawable) + for drawable in result.remove: + self._drawables.remove(drawable) def render_health_bar(self, surface, damage_experienced=None): bar_surface = pygame.Surface((110, 50)).convert(surface)