5#include "CoreMinimal.h"
6#include "GameFramework/Actor.h"
11#include "FlagSpawn.generated.h"
16class USphereComponent;
17class UAfflictionInstance;
34 GENERATED_UCLASS_BODY()
39 FORCEINLINE
virtual int32
GetTeam()
const override {
return Team; }
41 UFUNCTION(BlueprintCallable)
42 AFlag* GetFlag()
const {
return Flag; }
43 UFUNCTION(BlueprintCallable)
44 bool IsFlagHome()
const {
return bFlagIsHome; }
49 virtual float GetSpawnScoreForInstigator(
const AActor*
const QueryInstigator, FVector& TargetLocation,
bool bUseDistanceToTargetLocation =
false)
const override;
51 virtual TSoftObjectPtr<UTexture2D>
GetRadarIcon()
const override {
return RadarIcon; }
54 virtual bool CanFlagBeCaptured()
const;
55 virtual bool CanFlagBeSpawned()
const;
57 UPROPERTY(BlueprintAssignable)
58 FFlagSpawnEventSignature OnFlagUpdatedEvent;
59 UPROPERTY(BlueprintAssignable)
60 FFlagCarrierEventSignature OnFlagCapturedEvent;
61 UPROPERTY(BlueprintAssignable)
62 FFlagStateUpdatedEventSignature OnFlagStateUpdatedEvent;
65 virtual
void BeginPlay() override;
66 virtual
void CollectPlayerStartList();
68 virtual
bool GetSpawnLocation(
AProjectXPlayerState* Instigator, FTransform& Transform) const override;
69 virtual AActor* GetPlayerStart(class AController* Player) const;
70 virtual AActor* GetTrackableInterfaceActor()
override {
return this; }
72 UFUNCTION(BlueprintImplementableEvent)
79 void OnRep_FlagState();
81 virtual
void OnOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex,
bool bFromSweep, const FHitResult& SweepResult);
83 UFUNCTION(NetMulticast, Unreliable)
84 void Multicast_OnFlagCaptured();
85 UFUNCTION(BlueprintImplementableEvent)
86 void OnFlagCaptured();
89 TArray<AActor*> PlayerStartList;
91 UPROPERTY(ReplicatedUsing = OnRep_FlagState)
92 bool bFlagIsHome = false;
93 UPROPERTY(ReplicatedUsing = OnRep_Flag)
97 UPROPERTY(EditDefaultsOnly, Category = "Capture Point", meta = (AllowPrivateAccess = true))
98 TSoftObjectPtr<UTexture2D> RadarIcon =
nullptr;
100 UPROPERTY(EditDefaultsOnly, Category = "Capture Point", meta = (AllowPrivateAccess = true))
101 float RadarIconOpacity = 0.3f;
103 UPROPERTY(EditDefaultsOnly, Category = "Spawn Scoring", meta = (AllowPrivateAccess = true))
104 float FlagSpawnDistanceScoringWeight = 10000.f;
107 UPROPERTY(EditDefaultsOnly)
110 UPROPERTY(EditInstanceOnly, Category = "Capture Point Spawns")
113 UPROPERTY(EditInstanceOnly, Category = FlagSpawn)
116 UPROPERTY(EditDefaultsOnly)
119 UPROPERTY(EditDefaultsOnly)
120 bool bDoesFlagResetIfCaptured = true;
122 UPROPERTY(EditDefaultsOnly)
123 bool bCanFlagBeCapturedWhenNotHome = false;
125 UPROPERTY(EditDefaultsOnly)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FFlagCarrierEventSignature, AFlag *, Flag, AProjectXCharacter *, Character, int32, Team)
EFlagSpawnBehaviour
Definition: FlagSpawn.h:25
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFlagStateUpdatedEventSignature, bool, bFlagIsHome)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FFlagSpawnEventSignature, AFlag *, Flag, bool, bNewFlag)
Definition: FlagSpawn.h:33
virtual float GetRadarIconOpacity() const
Definition: FlagSpawn.h:52
virtual FORCEINLINE int32 GetTeam() const override
Definition: FlagSpawn.h:39
virtual void SetRadarIconOpacity(float Opacity) override
Definition: FlagSpawn.h:53
virtual int32 SetTeam(int32 NewTeam) override
Definition: FlagSpawn.h:40
virtual TSoftObjectPtr< UTexture2D > GetRadarIcon() const override
Definition: FlagSpawn.h:51
Definition: ProjectXCharacter.h:128
Definition: ProjectXPlayerState.h:238
Definition: StartPointVolume.h:14
Definition: ReactsToMatchEvents.h:16
Definition: SpawnTargetInterface.h:18
Definition: TeamInterface.h:26
Definition: TrackableInterface.h:22