LEAP Documentation 40220
Documentation for the LEAP project
AssaultPoint.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "GameFramework/Actor.h"
9#include "TeamInterface.h"
10#include "TrackableInterface.h"
12#include "AssaultPoint.generated.h"
13
17
18USTRUCT(Blueprintable)
20{
21 GENERATED_USTRUCT_BODY()
22public:
23 UPROPERTY(BlueprintReadWrite)
24 bool bDestroyed = false;
25 UPROPERTY(BlueprintReadWrite)
26 bool bActive = false;
27 UPROPERTY(BlueprintReadWrite)
28 uint8 TeamOwner = -1;
29};
30
31USTRUCT(Blueprintable)
33{
34 GENERATED_USTRUCT_BODY()
35public:
36 UPROPERTY(EditAnywhere, BlueprintReadWrite)
37 TArray<class ASoftBoundaryVolume*> LinkedBoundaries;
38};
39
40DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointOwnerChanged,int32, TeamOwner);
41DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointSignature, AAssaultPoint*, AssaultPoint);
42DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointDestroyedEvent, bool, bDestroyed);
43DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointInfoChangedEvent, const FAssaultPointInfo&, AssaultPointInfo);
44DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointBombTargetChanged, AAssaultPointDestructible*, DestructibleTarget);
45
46UCLASS(BlueprintType, Blueprintable)
47class PROJECTX_API AAssaultPoint : public AActor, public ISpawnTargetInterface, public IReactsToMatchEvents, public ITeamInterface, public ITrackableInterface
48{
49 GENERATED_UCLASS_BODY()
50
51public:
52 UFUNCTION(BlueprintPure, Category = AssaultPoint)
53 const FAssaultPointInfo& GetAssaultPointInfo() const { return AssaultPointInfo; }
54 UFUNCTION(BlueprintPure, Category = AssaultPoint)
55 int32 GetSortOrder() const { return SortOrder; }
56 UFUNCTION(BlueprintPure, Category = AssaultPoint)
57 FText GetPointName() const { return PointName; }
58 virtual int32 GetTeam() const override { return AssaultPointInfo.TeamOwner; }
59 UFUNCTION(BlueprintPure, Category = AssaultPoint)
60 AAssaultPointDestructible* GetDestructionPoint() const { return DestroyableTarget; }
61 UFUNCTION(BlueprintPure, Category = AssaultPoint)
62 uint8 GetPhase() const { return AssaultPointPhase; }
63 UFUNCTION(BlueprintPure)
64 bool IsDestroyed() const { return AssaultPointInfo.bDestroyed; }
65 UFUNCTION(BlueprintPure)
66 FORCEINLINE bool IsLocked() const {return bLocked;}
67 UFUNCTION(BlueprintPure)
68 bool IsActiveTarget() const;
69 virtual void Initialize(int32 TeamOverride = INDEX_NONE);
70 virtual bool CanSpawnPlayer(const AProjectXPlayerState* Instigator) const override;
71 virtual bool GetSpawnLocation(AProjectXPlayerState* Instigator, FTransform& Transform) const override;
72 virtual AActor* GetTrackableInterfaceActor() override { return this; }
73 virtual AActor* GetPlayerStart(class AController* Player) const;
74 virtual int32 SetTeam(int32 NewTeamOwner) override;
75 UFUNCTION()
76 void OnPhaseUpdated(int32 NewPhase, int32 PreviousPhase);
77
78 UPROPERTY(BlueprintAssignable)
79 FAssaultPointSignature OnAssaultPointDestroyedEvent;
80 UPROPERTY(BlueprintAssignable)
81 FAssaultPointInfoChangedEvent OnAssaultPointInfoChanged;
82 UPROPERTY(BlueprintAssignable)
83 FAssaultPointBombTargetChanged OnAssaultPointBombTargetChangedEvent;
84
85protected:
86 virtual void BeginPlay() override;
87 virtual void CollectPlayerStartList();
88
89 void AssaultPointDestroyed();
90
91 UFUNCTION()
92 void GatherDestructiblePoints();
93
94 UFUNCTION(BlueprintImplementableEvent)
95 void OnAssaultPointDestroyed();
96 UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, Category = AssaultPoint)
97 void OnTeamOwnerChanged();
98
99 UFUNCTION()
100 virtual void OnTargetDestroyed(AAssaultPointDestructible* ActorDestroyed);
101
102 UFUNCTION()
103 void OnRep_AssaultPointInfo();
104
105 /* Determines what order the points will display on the HUD */
106 UPROPERTY(EditInstanceOnly, Category = "Assault Point")
107 int32 SortOrder = INDEX_NONE;
108
109 /* The team this capture point defaults to. If -1 this capture point will be neutral */
110 UPROPERTY(EditInstanceOnly, Category = "Assault Point")
111 int32 DefaultTeam = INDEX_NONE;
112
113 UPROPERTY(ReplicatedUsing = OnRep_AssaultPointInfo)
114 FAssaultPointInfo AssaultPointInfo;
115 /* Privately collected using the spawning volume. */
116 TMap<EAssaultRole,TArray<AActor*>> PlayerStartList;
117 /* Volume used to gather player starts*/
118 UPROPERTY(EditInstanceOnly, Category = "Assault Point")
119 TMap<EAssaultRole,class AStartPointVolume*> StartPointVolumes;
120 /* Soft boundaries linked to this point */
121 UPROPERTY(EditInstanceOnly, Category = "Assault Point")
123 /* Name used to identify the point on the ui*/
124 UPROPERTY(EditInstanceOnly, Category = "Assault Point")
125 FText PointName = FText::FromString("X");
126 /* actors that are attacked to claim this point*/
127 UPROPERTY(EditAnywhere, Category = "Assault Point")
128 AAssaultPointDestructible* DestroyableTarget;
129 /*Phase that this point will be unlocked*/
130 UPROPERTY(EditAnywhere, Category = "Assault Point")
131 int32 AssaultPointPhase = -1;
132 /* is this point locked and uncapturable*/
133 UPROPERTY(EditAnywhere, Category = "Assault Point")
134 bool bLocked = false;
135 UPROPERTY(EditAnywhere, Category = "Assault Point")
136 class UCapsuleComponent* Capsule = NULL;
137};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointOwnerChanged, int32, TeamOwner)
EAssaultRole
Definition: ProjectXGameModeAssault.h:13
Definition: AssaultPointDestructible.h:37
bool bDestroyed
Definition: AssaultPointDestructible.h:107
Definition: AssaultPoint.h:48
virtual AActor * GetTrackableInterfaceActor() override
Definition: AssaultPoint.h:72
virtual int32 GetTeam() const override
Definition: AssaultPoint.h:58
Definition: ProjectXCharacter.h:128
virtual bool CanSpawnPlayer(const AProjectXPlayerState *Instigator) const override
Definition: ProjectXCharacter.cpp:388
virtual void BeginPlay() override
Definition: ProjectXCharacter.cpp:179
int32 TeamOverride
Definition: ProjectXCharacter.h:631
virtual int32 SetTeam(int32 NewTeam) override
Definition: ProjectXCharacter.cpp:1870
virtual bool GetSpawnLocation(AProjectXPlayerState *SpawnInstigator, FTransform &Transform) const override
Definition: ProjectXCharacter.cpp:481
Definition: ProjectXGameModeAssault.h:21
Definition: ProjectXPlayerState.h:238
Definition: SoftBoundaryVolume.h:19
Definition: StartPointVolume.h:14
Definition: ReactsToMatchEvents.h:16
Definition: SpawnTargetInterface.h:18
Definition: TeamInterface.h:26
Definition: TrackableInterface.h:22
Definition: AssaultPoint.h:20