171 - Local Fire Effects

This commit is contained in:
Kingsmedia 2022-05-26 13:29:49 +02:00
parent 72cf9d1833
commit 51a96c9fb1
3 changed files with 14 additions and 1 deletions

View File

@ -103,6 +103,7 @@ void UCombatComponent::Fire()
{ {
bCanFire = false; bCanFire = false;
ServerFire(HitTarget); ServerFire(HitTarget);
LocalFire(HitTarget);
if (PrimaryWeapon) if (PrimaryWeapon)
{ {
CrosshairShootingFactor = .75f; CrosshairShootingFactor = .75f;
@ -139,6 +140,12 @@ void UCombatComponent::ServerFire_Implementation(const FVector_NetQuantize& Trac
} }
void UCombatComponent::MulticastFire_Implementation(const FVector_NetQuantize& TraceHitTarget) void UCombatComponent::MulticastFire_Implementation(const FVector_NetQuantize& TraceHitTarget)
{
if (Character && Character->IsLocallyControlled() && !Character->HasAuthority()) return;
LocalFire(TraceHitTarget);
}
void UCombatComponent::LocalFire(const FVector_NetQuantize& TraceHitTarget)
{ {
if (PrimaryWeapon == nullptr) return; if (PrimaryWeapon == nullptr) return;
if (Character && CombatState == ECombatState::ECS_Reloading && PrimaryWeapon->IsShotgun()) if (Character && CombatState == ECombatState::ECS_Reloading && PrimaryWeapon->IsShotgun())
@ -175,6 +182,8 @@ void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
void UCombatComponent::SwapWeapons() void UCombatComponent::SwapWeapons()
{ {
if (CombatState != ECombatState::ECS_Unoccupied) return;
AWeapon* TempWeapon = PrimaryWeapon; AWeapon* TempWeapon = PrimaryWeapon;
PrimaryWeapon = SecondaryWeapon; PrimaryWeapon = SecondaryWeapon;
SecondaryWeapon = TempWeapon; SecondaryWeapon = TempWeapon;

View File

@ -152,6 +152,7 @@ private:
void StartFireTimer(); void StartFireTimer();
void FireTimerFinished(); void FireTimerFinished();
void LocalFire(const FVector_NetQuantize& TraceHitTarget);
bool CanFire(); bool CanFire();

View File

@ -270,7 +270,10 @@ void AWeapon::Fire(const FVector& HitTarget)
} }
} }
} }
SpendRound(); if (HasAuthority())
{
SpendRound();
}
} }
void AWeapon::Dropped() void AWeapon::Dropped()