+ def _hit_enemy(self, enemy, weapon):
+ enemy.health -= weapon.damage
+ if enemy.health <= 0:
+ self._level.remove_enemy(enemy)
+ self._enemies.remove(enemy)
+
+ @defer_to_update
+ def _fire_weapon(self, world):
+ weapon = weapon_by_name(world.weapons.current)
+ if weapon.bullet_range > 0:
+ # ranged, fire bullet
+ print("Pew.")
+ else:
+ # melee
+ pos, dp = self._player_pos, self._angle_dp
+ pos = (pos[0] + dp[0], pos[1] + dp[1])
+ enemy = self._level.get_enemy(pos[0], pos[1])
+ if enemy:
+ self._hit_enemy(enemy, weapon)
+