5#include "CoreMinimal.h"
6#include "GameFramework/Actor.h"
9#include "WeakInterfacePtr.h"
12#include "ProjectXSpawnerObjective.generated.h"
40 GENERATED_USTRUCT_BODY()
43 UPROPERTY(BlueprintReadOnly)
45 UPROPERTY(BlueprintReadOnly)
46 float ObjectiveStartTime = -1;
54 GENERATED_UCLASS_BODY()
56 UFUNCTION(BlueprintCallable)
58 UFUNCTION(BlueprintCallable)
59 UUserWidget* const GetObjectiveWidget()
const {
return ObjectiveWidget.IsValid()? ObjectiveWidget.Get() : NULL; }
60 UFUNCTION(BlueprintCallable)
62 virtual void BeginSpawning_Implementation()
override;
63 virtual void StopSpawning_Implementation()
override;
67 virtual void SetObjectiveSucceded(
bool bSuccess);
70 virtual const TArray<TWeakObjectPtr<AActor>>&
GetSharedObjectives()
const {
return SharedObjectiveActors; }
72 virtual void BeginPlay()
override;
73 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
75 virtual void StartWarmup();
76 virtual void StartObjective();
77 virtual void EndObjective();
78 virtual void StartCleanup();
79 virtual void ToggleObjectiveWidget(
bool bWidgetActive);
81 UPROPERTY(BlueprintAssignable)
82 FSpawnEventCompleteSignature OnObjectiveCompletedEvent;
83 UPROPERTY(BlueprintAssignable)
84 FSpawnProgressSignature OnObjectiveSpawnedEvent;
85 UPROPERTY(BlueprintAssignable)
86 FObjectiveStatusUpdatedSignature OnObjectiveStatusUpdatedEvent;
89 virtual
void InitializeGamePlayObjects() {}
94 virtual
void RequestObjectiveStatusUpdateDelayed();
96 virtual
void RequestObjectiveStatusUpdate();
98 virtual
void WarmupStarted();
100 virtual
void ObjectiveStarted();
102 virtual
void ObjectiveComplete();
104 virtual
void CleanupComplete();
106 UFUNCTION(BlueprintNativeEvent)
107 void OnWarmupStarted();
108 UFUNCTION(BlueprintNativeEvent)
109 void OnObjectiveStarted();
110 UFUNCTION(BlueprintNativeEvent)
111 void OnObjectiveComplete();
112 UFUNCTION(BlueprintNativeEvent)
113 void OnCleanupCompleted();
114 UFUNCTION(BlueprintImplementableEvent)
115 void OnObjectiveWidgetToggled(UUserWidget* ObjectiveOwnedWidget,
bool bToggled);
117 void OnRep_ObjectiveStatus();
119 UPROPERTY(ReplicatedUsing = OnRep_ObjectiveStatus)
123 UPROPERTY(EditAnywhere)
124 float WarmupDuration = 0.0f;
126 UPROPERTY(EditAnywhere)
127 float CleanUpDuration = 0.0;
129 UPROPERTY(EditAnywhere)
130 bool bDestroyWhenFinishedSpawning = false;
132 UPROPERTY(EditAnywhere)
135 UPROPERTY(EditAnywhere)
138 UPROPERTY(EditAnywhere)
141 UPROPERTY(EditDefaultsOnly)
142 TSubclassOf<UUserWidget> ObjectiveWidgetClass = NULL;
144 UPROPERTY(EditDefaultsOnly)
145 float PlayerScalingValue = 1.0f;
148 TWeakObjectPtr<UUserWidget> ObjectiveWidget = NULL;
154 TArray<TWeakObjectPtr<AActor>> SharedObjectiveActors = TArray<TWeakObjectPtr<AActor>>();
158 FTimerHandle DurationTimerHandle = FTimerHandle();
EObjectiveComplete
Definition: ProjectXSpawnerObjective.h:31
EObjectiveState
Definition: ProjectXSpawnerObjective.h:21
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FObjectiveStatusUpdatedSignature, AProjectXSpawnerObjective *, ObjectiveController, const FObjectiveStatus &, ObjectiveStatus)
EWaveSpawnerState
Definition: WaveSpawner.h:61
Definition: ProjectXSpawnerObjective.h:53
virtual FSpawnEventCompleteSignature & GetEventCompleteEvent() override
Definition: ProjectXSpawnerObjective.h:69
virtual void CollectSharedObjectivesList(TArray< TWeakObjectPtr< AActor > > SharedActors)
Definition: ProjectXSpawnerObjective.h:90
virtual FSpawnProgressSignature & GetSpawnCompleteEvent() override
Definition: ProjectXSpawnerObjective.h:68
virtual const TArray< TWeakObjectPtr< AActor > > & GetSharedObjectives() const
Definition: ProjectXSpawnerObjective.h:70
virtual AProjectXSpawnerObjective * GetObjective() override
Definition: ProjectXSpawnerObjective.h:65
virtual bool IsObjectiveComplete() const
Definition: ProjectXSpawnerObjective.h:66
virtual bool IsAnObjective() const override
Definition: ProjectXSpawnerObjective.h:64
Definition: WaveSpawner.h:115
Definition: ReactsToMatchEvents.h:16
Definition: ReactsToObjectiveInterface.h:18
Definition: SpawnInterface.h:24
Definition: ProjectXSpawnerObjective.h:39
Definition: WaveSpawner.h:81