192 - Shotgun Score Request
This commit is contained in:
parent
067c83583c
commit
87d05490a5
|
@ -36,6 +36,34 @@ void ULagCompensationComponent::ServerScoreRequest_Implementation(ABlasterCharac
|
|||
}
|
||||
}
|
||||
|
||||
void ULagCompensationComponent::ShotgunServerScoreRequest_Implementation(const TArray<ABlasterCharacter*>& HitCharacters, const FVector_NetQuantize& TraceStart,
|
||||
const TArray<FVector_NetQuantize>& HitLocations, float HitTime, AWeapon* DamageCauser)
|
||||
{
|
||||
FShotgunServerSideRewindResult Confirm = ShotgunServerSideRewind(HitCharacters, TraceStart, HitLocations, HitTime);
|
||||
|
||||
for (auto& HitCharacter : HitCharacters)
|
||||
{
|
||||
if (HitCharacter == nullptr || Character == nullptr || HitCharacter->GetPrimaryWeapon() == nullptr) continue;
|
||||
float TotalDamage = 0.f;
|
||||
if (Confirm.Headshots.Contains(HitCharacter))
|
||||
{
|
||||
TotalDamage += Confirm.Headshots[HitCharacter] * Character->GetPrimaryWeapon()->GetDamage();
|
||||
}
|
||||
if (Confirm.BodyShots.Contains(HitCharacter))
|
||||
{
|
||||
TotalDamage += Confirm.BodyShots[HitCharacter] * Character->GetPrimaryWeapon()->GetDamage();
|
||||
}
|
||||
|
||||
UGameplayStatics::ApplyDamage(
|
||||
HitCharacter,
|
||||
TotalDamage,
|
||||
Character->Controller,
|
||||
Character->GetPrimaryWeapon(),
|
||||
UDamageType::StaticClass()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void ULagCompensationComponent::SaveFramePackage()
|
||||
{
|
||||
if (Character == nullptr || !Character->HasAuthority()) return;
|
||||
|
@ -355,7 +383,7 @@ FServerSideRewindResult ULagCompensationComponent::ServerSideRewind(ABlasterChar
|
|||
}
|
||||
|
||||
FShotgunServerSideRewindResult ULagCompensationComponent::ShotgunServerSideRewind(const TArray<ABlasterCharacter*>& HitCharacters,
|
||||
const FVector_NetQuantize& TraceStart, const TArray<FVector_NetQuantize>& HitLocations, float HitTime)
|
||||
const FVector_NetQuantize& TraceStart, const TArray<FVector_NetQuantize>& HitLocations, float HitTime)
|
||||
{
|
||||
TArray<FFramePackage> FramesToCheck;
|
||||
for (ABlasterCharacter* HitCharacter : HitCharacters)
|
||||
|
|
|
@ -86,7 +86,23 @@ public:
|
|||
float HitTime,
|
||||
AWeapon* DamageCauser
|
||||
);
|
||||
|
||||
UFUNCTION(Server, Reliable)
|
||||
void ShotgunServerScoreRequest(
|
||||
const TArray<ABlasterCharacter*>& HitCharacters,
|
||||
const FVector_NetQuantize& TraceStart,
|
||||
const TArray<FVector_NetQuantize>& HitLocations,
|
||||
float HitTime,
|
||||
AWeapon* DamageCauser
|
||||
);
|
||||
|
||||
FShotgunServerSideRewindResult ShotgunServerSideRewind(
|
||||
const TArray<ABlasterCharacter*>& HitCharacters,
|
||||
const FVector_NetQuantize& TraceStart,
|
||||
const TArray<FVector_NetQuantize>& HitLocations,
|
||||
float HitTime
|
||||
);
|
||||
|
||||
protected:
|
||||
virtual void BeginPlay() override;
|
||||
void SaveFramePackage();
|
||||
|
@ -105,13 +121,7 @@ protected:
|
|||
FFramePackage GetFrameToCheck(ABlasterCharacter* HitCharacter, float HitTime);
|
||||
|
||||
// Shotgun related stuff
|
||||
|
||||
FShotgunServerSideRewindResult ShotgunServerSideRewind(
|
||||
const TArray<ABlasterCharacter*>& HitCharacters,
|
||||
const FVector_NetQuantize& TraceStart,
|
||||
const TArray<FVector_NetQuantize>& HitLocations,
|
||||
float HitTime
|
||||
);
|
||||
|
||||
FShotgunServerSideRewindResult ShotgunConfirmHit(
|
||||
const TArray<FFramePackage>& FramePackages,
|
||||
const FVector_NetQuantize& TraceStart,
|
||||
|
|
Loading…
Reference in New Issue