comparison 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
comparison
equal deleted inserted replaced
392:1b7b0b8e8275 393:8d961e05b7b6
7 from nagslang.constants import ( 7 from nagslang.constants import (
8 COLLISION_TYPE_PLAYER, ZORDER_MID, WEREWOLF_SOAK_FACTOR, 8 COLLISION_TYPE_PLAYER, ZORDER_MID, WEREWOLF_SOAK_FACTOR,
9 PROTAGONIST_HEALTH_MIN_LEVEL, PROTAGONIST_HEALTH_MAX_LEVEL, 9 PROTAGONIST_HEALTH_MIN_LEVEL, PROTAGONIST_HEALTH_MAX_LEVEL,
10 NON_GAME_OBJECT_COLLIDERS, BULLET_DAMAGE, BULLET_SPEED, CLAW_DAMAGE, 10 NON_GAME_OBJECT_COLLIDERS, BULLET_DAMAGE, BULLET_SPEED, CLAW_DAMAGE,
11 CMD_TOGGLE_FORM, CMD_ACTION) 11 CMD_TOGGLE_FORM, CMD_ACTION)
12 from nagslang.events import FireEvent, ClawEvent 12 from nagslang.events import ClawEvent
13 from nagslang.game_object import GameObject, Physicser, make_body 13 from nagslang.game_object import (
14 GameObject, Physicser, Result, Bullet, make_body)
14 from nagslang.mutators import FLIP_H 15 from nagslang.mutators import FLIP_H
15 from nagslang.resources import resources 16 from nagslang.resources import resources
16 from nagslang.events import ScreenChange 17 from nagslang.events import ScreenChange
17 from nagslang.utils import vec_from_angle, vec_with_length 18 from nagslang.utils import vec_from_angle, vec_with_length
18 19
190 def handle_attack_key_down(self): 191 def handle_attack_key_down(self):
191 if self.changing_sequence or self.check_timer('attack_cooldown'): 192 if self.changing_sequence or self.check_timer('attack_cooldown'):
192 return 193 return
193 self.start_timer('attack_cooldown') 194 self.start_timer('attack_cooldown')
194 self.world.attacks += 1 195 self.world.attacks += 1
195 self.attack() 196 return self.attack()
196 197
197 def handle_keypress(self, key_command): 198 def handle_keypress(self, key_command):
198 if self.changing_sequence: 199 if self.changing_sequence:
199 return 200 return
200 if key_command == CMD_TOGGLE_FORM: 201 if key_command == CMD_TOGGLE_FORM:
292 293
293 def attack(self): 294 def attack(self):
294 """Attempt to hurt something. 295 """Attempt to hurt something.
295 """ 296 """
296 if self.in_wolf_form(): 297 if self.in_wolf_form():
297 self.claw() 298 return self.claw()
298 else: 299 else:
299 self.shoot() 300 return self.shoot()
300 301
301 def shoot(self): 302 def shoot(self):
302 if not self.has_item('gun'): 303 if not self.has_item('gun'):
303 return 304 return
304 vec = vec_from_angle(self.angle, BULLET_SPEED) 305 vec = vec_from_angle(self.angle, BULLET_SPEED)
305 FireEvent.post( 306 return Result(add=(Bullet(self.get_space(), self.physicser.position,
306 self.physicser.position, vec, BULLET_DAMAGE, 'bullet', 307 vec, BULLET_DAMAGE, 'bullet',
307 COLLISION_TYPE_PLAYER) 308 COLLISION_TYPE_PLAYER),))
308 309
309 def claw(self): 310 def claw(self):
310 claw_range = (math.sqrt(math.pow(self.physicser.get_velocity()[0], 2) + 311 claw_range = (math.sqrt(math.pow(self.physicser.get_velocity()[0], 2) +
311 math.pow(self.physicser.get_velocity()[1], 2)) 312 math.pow(self.physicser.get_velocity()[1], 2))
312 / 20) + 30 313 / 20) + 30