Initial Commit - Lesson 31 (Commit #1)
This commit is contained in:
47
Source/FPSTemplate/Public/Elimination/EliminationComponent.h
Normal file
47
Source/FPSTemplate/Public/Elimination/EliminationComponent.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Components/ActorComponent.h"
|
||||
#include "ShooterTypes/ShooterTypes.h"
|
||||
#include "EliminationComponent.generated.h"
|
||||
|
||||
class AMatchPlayerState;
|
||||
class AMatchGameState;
|
||||
|
||||
UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
|
||||
class FPSTEMPLATE_API UEliminationComponent : public UActorComponent
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UEliminationComponent();
|
||||
|
||||
UFUNCTION()
|
||||
void OnRoundReported(AActor* Attacker, AActor* Victim, bool bHit, bool bHeadShot, bool bLethal);
|
||||
|
||||
protected:
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
private:
|
||||
|
||||
// Time frame to determine sequential elims
|
||||
UPROPERTY(EditDefaultsOnly, Category = Elimination)
|
||||
float SequentialElimInterval;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly, Category = Elimination)
|
||||
int32 ElimsNeededForStreak;
|
||||
|
||||
float LastElimTime;
|
||||
int32 SequentialElims;
|
||||
int32 Streak;
|
||||
|
||||
AMatchPlayerState* GetPlayerStateFromActor(AActor* Actor);
|
||||
void ProcessHitOrMiss(bool bHit, AMatchPlayerState* AttackerPS);
|
||||
void ProcessElimination(bool bHeadShot, AMatchPlayerState* AttackerPS, AMatchPlayerState* VictimPS);
|
||||
void ProcessHeadshot(bool bHeadShot, ESpecialElimType& SpecialElimType, AMatchPlayerState* AttackerPS);
|
||||
void ProcessSequentialEliminations(AMatchPlayerState* AttackerPS, ESpecialElimType& SpecialElimType);
|
||||
void ProcessStreaks(AMatchPlayerState* AttackerPS, AMatchPlayerState* VictimPS, ESpecialElimType& SpecialElimType);
|
||||
void HandleFirstBlood(AMatchGameState* GameState, ESpecialElimType& SpecialElimType, AMatchPlayerState* AttackerPS);
|
||||
void UpdateLeaderStatus(AMatchGameState* GameState, ESpecialElimType& SpecialElimType, AMatchPlayerState* AttackerPS, AMatchPlayerState* VictimPS);
|
||||
bool HasSpecialElimTypes(const ESpecialElimType& SpecialElimType);
|
||||
};
|
||||
Reference in New Issue
Block a user