5#include "CoreMinimal.h"
8#include "Flag.generated.h"
10class UAfflictionInstance;
12class UCapsuleComponent;
14class USphereComponent;
28 GENERATED_USTRUCT_BODY()
30 UPROPERTY(BlueprintReadWrite)
32 UPROPERTY(BlueprintReadWrite)
44 GENERATED_UCLASS_BODY()
49 UFUNCTION(BlueprintCallable)
51 UFUNCTION(BlueprintCallable)
52 FORCEINLINE
FFlagInfo GetFlagInfo()
const {
return FlagInfo; }
53 UFUNCTION(BlueprintCallable)
54 FORCEINLINE
float GetPickupRadius()
const {
return PickupRadius; }
55 UFUNCTION(BlueprintCallable)
56 FORCEINLINE UCapsuleComponent* GetCapsuleComponent()
const {
return CapsuleComponent; }
57 UFUNCTION(BlueprintCallable)
58 FORCEINLINE TSubclassOf<UAfflictionInstance> GetFlagCarrierAffliction()
const {
return FlagCarrierAfflictionInstance; }
59 UFUNCTION(BlueprintCallable)
60 FORCEINLINE
bool CanBePickedUp()
const {
return bCanBePickedUp; }
63 virtual TSoftObjectPtr<UTexture2D>
GetRadarIcon()
const override {
return RadarIcon; }
67 UPROPERTY(BlueprintAssignable)
68 FFlagEventSignature OnFlagPickedUp;
69 UPROPERTY(BlueprintAssignable)
70 FFlagEventSignature OnFlagReturned;
71 UPROPERTY(BlueprintAssignable)
72 FFlagEventSignature OnFlagCaptured;
73 UPROPERTY(BlueprintAssignable)
74 FFlagEventSignature OnFlagDropped;
75 UPROPERTY(BlueprintAssignable)
76 FFlagStateSignature OnFlagStateUpdated;
77 UPROPERTY(BlueprintAssignable)
78 FFlagEventSignature OnCarrierCharacterUpdatedEvent;
84 virtual int32 SetTeam(int32 NewTeam)
override {
Team = NewTeam;
return Team; }
87 virtual void Tick(
float DeltaSeconds)
override;
88 virtual bool ItemPickedUp(AActor* PickingUpActor);
91 bool CheckForFlagPickups();
94 UFUNCTION(BlueprintImplementableEvent)
95 void FlagStatUpdated();
96 UFUNCTION(BlueprintImplementableEvent)
97 void FlagPickupUpdated();
100 virtual
void OnOverlap(UPrimitiveComponent* OverlapComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex,
bool bFromSweep, const FHitResult& SweepResult);
102 void CarrierDied(AActor* Victim, const
float Damage, struct FDamageEvent const& DamageEvent, const class AController* EventInstigator, const AActor* DamageCauser, const APlayerState* InstigatorPlayerState);
104 void OnCarrierEnterSoftBoundary(AActor* Actor,
ASoftBoundaryVolume* TargetSoftBoundaryVolume);
106 void FlagAfflictionEnded();
109 void OnRep_CanBePickedUp();
111 void OnRep_FlagInfo();
113 UPROPERTY(EditDefaultsOnly, Category = "Flag")
114 TSoftObjectPtr<UTexture2D> RadarIcon =
nullptr;
115 UPROPERTY(EditDefaultsOnly, Category = "Flag")
116 float RadarIconOpacity = 0.3f;
117 UPROPERTY(EditDefaultsOnly, Category = "Flag")
118 float RadarIconOpacityWhenCarried = 0.0f;
119 UPROPERTY(EditDefaultsOnly, Category = "Flag")
120 float RadarIconOpacityWhenDropped = 1.0f;
122 UPROPERTY(ReplicatedUsing = OnRep_FlagInfo)
124 UPROPERTY(Replicated)
126 UPROPERTY(Replicated)
127 bool bCanBePickedUp = true;
129 UPROPERTY(EditDefaultsOnly)
130 float PickupRadius = 200.0f;
132 UPROPERTY(EditDefaultsOnly)
133 UCapsuleComponent* CapsuleComponent;
135 UPROPERTY(EditDefaultsOnly)
136 TSubclassOf<UAfflictionInstance> FlagCarrierAfflictionInstance;
138 UPROPERTY(EditDefaultsOnly)
139 float PickupDelay = 1.0f;
141 UPROPERTY(EditDefaultsOnly)
142 bool bDoesFlagResetOnCapture = true;
144 UPROPERTY(EditDefaultsOnly)
145 TArray<TSubclassOf<AActor>> ActorClassesToTriggerReset;
147 UPROPERTY(EditDefaultsOnly)
149 FTimerHandle PickUpDelayTimer;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FFlagEventSignature, AFlag *, Flag, AProjectXCharacter *, Character, int32, Team)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FFlagStateSignature, const FFlagInfo &, Info)
EFlagState
Definition: Flag.h:18
virtual TSoftObjectPtr< UTexture2D > GetRadarIcon() const override
Definition: Flag.h:63
virtual int32 GetTeam() const override
Definition: Flag.h:48
void UpdateCanBePickedUp(bool bNewPickupableState)
Definition: Flag.h:92
virtual float GetRadarIconOpacity() const
Definition: Flag.h:64
virtual bool GetAllyVisibilityResponse() override
Definition: Flag.h:61
virtual void SetRadarIconOpacity(float Opacity) override
Definition: Flag.h:65
Definition: ProjectXCharacter.h:128
Definition: SoftBoundaryVolume.h:19
Definition: TeamInterface.h:26
Definition: TrackableInterface.h:22