LEAP Documentation 40220
Documentation for the LEAP project
ProjectXObjectiveVIP.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2022. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "ProjectXObjectiveVIP.generated.h"
8
9class UAfflictionInstance;
10
11USTRUCT(BlueprintType)
13{
14 GENERATED_USTRUCT_BODY()
16public:
17 UPROPERTY(BlueprintReadWrite, EditAnywhere)
18 TMap<TSubclassOf<AProjectXCharacter>,int32> VIPInfos;
19};
20
21USTRUCT(BlueprintType)
23{
24 GENERATED_USTRUCT_BODY()
26 FActiveVIPInfo(TWeakObjectPtr<AProjectXCharacter> VIP)
27 {
28 bDefeated = false;
29 VIPActor = VIP;
30 }
31
32public:
33 UPROPERTY(BlueprintReadWrite)
34 bool bDefeated = false;
35 UPROPERTY(BlueprintReadWrite)
36 TWeakObjectPtr<AProjectXCharacter> VIPActor = NULL;
37};
38
39DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnVIPObjectivePhaseUpdatedSignature, AProjectXObjectiveVIP*, VIPObjective, int32, Phase);
40DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnVIPObjectiveVIPSUpdatedSignature, AProjectXObjectiveVIP*, VIPObjective, const TArray<FActiveVIPInfo>&, VIPs);
41
42UCLASS()
44{
45 GENERATED_UCLASS_BODY()
46public:
47 UFUNCTION(BlueprintCallable)
48 uint8 GetPhaseNumber() const { return CurrentPhase; }
49 void GetVIPActors(TArray<AActor*>& VIPS) const;
50
51 virtual bool IsObjectiveComplete() const override;
52 virtual bool IsPhaseComplete() const;
53
54 UPROPERTY(BlueprintAssignable)
55 FOnVIPObjectivePhaseUpdatedSignature OnPhaseNumberUpdatedEvent;
56 UPROPERTY(BlueprintAssignable)
57 FOnVIPObjectiveVIPSUpdatedSignature OnVIPSUpdatedEvent;
58
59protected:
60 virtual void ObjectiveStarted() override;
61 virtual void InitializeGamePlayObjects();
62 virtual void ObjectiveComplete() override;
63 virtual void UpdateCurrentPhase();
64 virtual void StartCurrentPhase();
65 virtual void EndCurrentPhase();
66 virtual void UpdateIsFullySpawned();
67
68 UFUNCTION()
69 void OnMobSpawned(AProjectXCharacter* SpawnedPlayerState);
70 UFUNCTION()
71 void OnVIPKilled(class AActor* Victim, const float Damage, struct FDamageEvent const& DamageEvent, const class AController* EventInstigator, const class AActor* DamageCauser, const class APlayerState* InstigatorPlayerState);
72
73 UFUNCTION()
74 virtual void OnRep_PhaseNumber();
75 UFUNCTION()
76 virtual void OnRep_VIPS();
77
78 /* how many what types of ai make up the vips per phase*/
79 UPROPERTY(EditInstanceOnly)
80 TMap<int32,FVIPPhaseInfo> PhaseInfo;
81 /* time between vip phases*/
82 UPROPERTY(EditInstanceOnly)
83 float VIPPhaseDelay = 1.0f;
84 /* Affliction to apply to vip ai*/
85 UPROPERTY(EditDefaultsOnly)
86 TSubclassOf<UAfflictionInstance> VIPAffliction = NULL;
87 UPROPERTY(ReplicatedUsing = OnRep_PhaseNumber)
88 uint8 CurrentPhase = -1;
89 UPROPERTY(ReplicatedUsing = OnRep_VIPS)
90 TArray<FActiveVIPInfo> ChosenVIPS;
91 FVIPPhaseInfo ActivePhaseInfo;
92
93private:
94 FTimerHandle PhaseDelayTimer;
95 bool bPhaseActive = false;
96 bool bPhaseFullySpawned = false;
97};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnVIPObjectivePhaseUpdatedSignature, AProjectXObjectiveVIP *, VIPObjective, int32, Phase)
Definition: ProjectXCharacter.h:128
Definition: ProjectXObjectiveVIP.h:44
Definition: ProjectXSpawnerObjective.h:53
Definition: ProjectXObjectiveVIP.h:23
FActiveVIPInfo(TWeakObjectPtr< AProjectXCharacter > VIP)
Definition: ProjectXObjectiveVIP.h:26
Definition: ProjectXObjectiveVIP.h:13