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