3#include "CoreMinimal.h"
7#include "PickupReviveBeacon.generated.h"
9class APlayerController;
10class UInteractableComponent;
11class UCameraComponent;
12class USpringArmComponent;
25 GENERATED_USTRUCT_BODY()
29 ReviverPlayerState = NULL;
30 bReviveRespawnActive =
false;
37 bool bReviveRespawnActive;
53 virtual void BeginPlay()
override;
54 virtual void SetupInput(UInputComponent* InputComponent);
55 virtual void EndPlay(EEndPlayReason::Type EndplayReason)
override;
58 virtual bool CanBeInteractedWith(
const UPrimitiveComponent* Component,
const APlayerController* EventSender)
const override;
59 virtual FText GetHighlightText(
const UPrimitiveComponent* Component,
const APlayerController* EventSender)
const override;
60 virtual float GetHoldTimeMultiplier(
const APlayerController* EventSender)
const override;
61 virtual void FocusBeacon();
62 virtual void RequestHelp();
67 virtual void PromptRevivalExternal(APlayerController* Sender);
69 void SetReviveStartTime(
float Time);
70 virtual void DeployComplete()
override;
71 UFUNCTION(BlueprintCallable)
72 float GetHoverHeight()
const {
return HoverHeight; }
73 UFUNCTION(BlueprintCallable)
74 bool IsReviveRespawnActive()
const {
return ReviveStatus.bReviveRespawnActive; }
75 UFUNCTION(BlueprintCallable)
77 UFUNCTION(BlueprintCallable)
78 AProjectXPlayerState* const GetReviveTriggerPlayerState()
const {
return ReviveStatus.ReviverPlayerState.IsValid() ? ReviveStatus.ReviverPlayerState.Get() : NULL; }
79 UFUNCTION(BlueprintCallable)
80 TSubclassOf<class ULocalMessage> GetReviveBroadcastMessage()
const {
return ReviveBroadcastMessage; }
81 void Turn(
float Value);
82 void LookUp(
float Value);
84 UPROPERTY(BlueprintAssignable)
85 FRequestHelpSignature OnHelpRequested;
86 UPROPERTY(BlueprintAssignable)
87 FReviveAvailableSignature OnReviveStatusUpdated;
88 UPROPERTY(BlueprintAssignable)
89 FReviveStatusUpdatedSignature OnReviveStatusChanged;
92 void SetDeadPlayerCanRedeploy(
bool bNewDeadPlayerCanRedeploy);
95 void OnSelected(APlayerController* Sender, UPrimitiveComponent* Component);
97 void HoldStarted(APlayerController* Sender, UPrimitiveComponent* Component);
99 void HoldExited(APlayerController* Sender, UPrimitiveComponent* Component);
101 void OnNextRespawnTimeChanged();
103 UFUNCTION(BlueprintPure)
104 float GetReviveStartTime() {
return ReviveStartTime; }
107 void OnRep_ReviveRespawnActive();
109 void OnRep_DeadPlayerCanRedeploy();
111 void OnRep_ReviveStartTime();
112 UFUNCTION(
Server,Reliable,WithValidation)
113 void Server_Reliable_RequestHelp();
114 UFUNCTION(NetMulticast,Reliable,WithValidation)
115 void MultiCast_Reliable_RequestHelp();
117 UFUNCTION(BlueprintImplementableEvent)
118 void OnFocusBeacon();
119 UFUNCTION(BlueprintImplementableEvent)
120 void OnHoldStarted();
121 UFUNCTION(BlueprintImplementableEvent)
123 UFUNCTION(BlueprintImplementableEvent)
124 void OnRequestHelp();
125 UFUNCTION(BlueprintImplementableEvent)
126 void OnReviveStartTimeReplicated(
float InReviveStartTime);
127 UFUNCTION(BlueprintImplementableEvent)
128 void OnReviveRespawnActive();
129 UFUNCTION(BlueprintImplementableEvent)
130 void OnDeadPlayerCanRedeploy();
135 UPROPERTY(ReplicatedUsing = OnRep_ReviveStartTime)
136 float ReviveStartTime = -1.f;
138 UPROPERTY(EditDefaultsOnly, Category = Pickup)
139 UInteractableComponent* InteractableComponent;
141 UPROPERTY(EditDefaultsOnly)
142 USceneComponent* Root;
144 UPROPERTY(EditDefaultsOnly, Category = Pickup)
147 UPROPERTY(EditDefaultsOnly, Category = Pickup)
150 UPROPERTY(EditDefaultsOnly, Category = Pickup)
151 TSubclassOf<class ULocalMessage> ReviveBroadcastMessage;
153 UPROPERTY(EditDefaultsOnly, Category = Pickup)
156 UPROPERTY(EditAnywhere, Category = "Camera")
157 UCameraComponent* PawnCameraComponent =
nullptr;
158 UPROPERTY(EditAnywhere, Category = "Camera")
159 USpringArmComponent* CameraBoom =
nullptr;
160 bool bIsFocusable = true;
161 UPROPERTY(Replicated)
162 bool bCanInteract = true;
163 UPROPERTY(ReplicatedUsing = OnRep_ReviveRespawnActive)
165 UPROPERTY(ReplicatedUsing = OnRep_DeadPlayerCanRedeploy)
166 bool bDeadPlayerCanRedeploy = false;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FRequestHelpSignature, APickupReviveBeacon *, Beacon, AProjectXPlayerState *, PlayerState)
EReviveRespawResponse
Definition: PickupReviveBeacon.h:16
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FReviveAvailableSignature, FReviveStatus, Status)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FReviveStatusUpdatedSignature)
Definition: Deployable.h:47
Definition: PickupReviveBeacon.h:48
virtual bool GetAllyVisibilityResponse() override
Definition: PickupReviveBeacon.h:66
virtual float GetRadarIconOpacity() const override
Definition: PickupReviveBeacon.h:65
virtual FReviveStatus GetReviveStatus() const
Definition: PickupReviveBeacon.h:68
virtual float GetRadarIconEnemyOpacity() const override
Definition: PickupReviveBeacon.h:64
Definition: ProjectXPlayerState.h:238
Definition: InteractableInterface.h:18
Definition: SpawnTargetInterface.h:18
Definition: ProjectXDamageType.h:62
Definition: PickupReviveBeacon.h:24