diff nagslang/protagonist.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 83c29d0a0b9c
children 76f053cf2322
line wrap: on
line diff
--- a/nagslang/protagonist.py	Sat Sep 07 01:03:46 2013 +0200
+++ b/nagslang/protagonist.py	Sat Sep 07 01:04:01 2013 +0200
@@ -9,8 +9,9 @@
     PROTAGONIST_HEALTH_MIN_LEVEL, PROTAGONIST_HEALTH_MAX_LEVEL,
     NON_GAME_OBJECT_COLLIDERS, BULLET_DAMAGE, BULLET_SPEED, CLAW_DAMAGE,
     CMD_TOGGLE_FORM, CMD_ACTION)
-from nagslang.events import FireEvent, ClawEvent
-from nagslang.game_object import GameObject, Physicser, make_body
+from nagslang.events import ClawEvent
+from nagslang.game_object import (
+    GameObject, Physicser, Result, Bullet, make_body)
 from nagslang.mutators import FLIP_H
 from nagslang.resources import resources
 from nagslang.events import ScreenChange
@@ -192,7 +193,7 @@
             return
         self.start_timer('attack_cooldown')
         self.world.attacks += 1
-        self.attack()
+        return self.attack()
 
     def handle_keypress(self, key_command):
         if self.changing_sequence:
@@ -294,17 +295,17 @@
         """Attempt to hurt something.
         """
         if self.in_wolf_form():
-            self.claw()
+            return self.claw()
         else:
-            self.shoot()
+            return self.shoot()
 
     def shoot(self):
         if not self.has_item('gun'):
             return
         vec = vec_from_angle(self.angle, BULLET_SPEED)
-        FireEvent.post(
-            self.physicser.position, vec, BULLET_DAMAGE, 'bullet',
-            COLLISION_TYPE_PLAYER)
+        return Result(add=(Bullet(self.get_space(), self.physicser.position,
+                                  vec, BULLET_DAMAGE, 'bullet',
+                                  COLLISION_TYPE_PLAYER),))
 
     def claw(self):
         claw_range = (math.sqrt(math.pow(self.physicser.get_velocity()[0], 2) +