LEAP Documentation 40220
Documentation for the LEAP project
ProjectXGameStateAssault.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"
6#include "ProjectXGameState.h"
8#include "ProjectXGameStateAssault.generated.h"
9
11class AAssaultPoint;
12
13USTRUCT(BlueprintType)
15{
16 GENERATED_USTRUCT_BODY()
17
19 FAssaultTeamInfo(uint8 TeamIDIn, EAssaultRole RoleIn)
20 {
21 TeamID = TeamIDIn;
22 Role = RoleIn;
23 }
24
25 UPROPERTY(BlueprintReadOnly)
26 uint8 TeamID = INDEX_NONE;
27 UPROPERTY(BlueprintReadOnly)
29};
30
31DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointsChangeSignature, const TArray<AAssaultPoint*>&, AssaultPoints);
32DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTeamRolesChangedSignature, const TArray<FAssaultTeamInfo>&, TeamRoles);
33DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FAssaultPointEventSignature, class AAssaultPoint*, AssaultPoint, int32, OwningTeam, int32, Data);
34DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FAssaultPhaseSignature, int32, NewPhase, int32, PreviousPhase);
35
36UCLASS()
38{
39 GENERATED_BODY()
40public:
42 virtual void InitializeGameState(AProjectXGameMode* GameMode) override;
43 UFUNCTION(BlueprintPure)
44 const TArray<AAssaultPoint*>& GetAssaultPoints() const { return AssaultPoints; }
45 UFUNCTION(BlueprintPure)
46 void GetActiveAssaultPoints(TArray<AAssaultPoint*>& ActivePoints) const;
47 UFUNCTION(BlueprintPure)
48 uint8 GetAssaultPhase() const { return AssaultPhase; }
49 UFUNCTION(BlueprintPure)
50 uint8 GetPreviousAssaultPhase() const { return PreviousPhase; }
51 UFUNCTION(BlueprintPure)
52 int32 GetTeamByRole(EAssaultRole AssaultRole) const;
53
54 void SaveAssaultPoints(const TArray<AAssaultPoint*>& Points);
55 void AssaultPointsChanged();
56
57 void UpdateAssaultPhase(int32 NewAssaultPhase);
58
59 const TArray<FAssaultTeamInfo>& GetAssaultTeamInfos() { return TeamInfos; }
60
61 virtual void HandleMatchWarmupEnded() override;
62
63 UPROPERTY(BlueprintAssignable)
64 FAssaultPointsChangeSignature OnAssaultPointsChanged;
65 UPROPERTY(BlueprintAssignable)
66 FTeamRolesChangedSignature OnTeamRolesChanged;
67 UPROPERTY(BlueprintAssignable)
68 FAssaultPointEventSignature OnAssaultPointEvent;
69 UPROPERTY(BlueprintAssignable)
70 FAssaultPhaseSignature OnPhaseChangedEvent;
71
72protected:
73 UFUNCTION()
74 virtual void OnRep_AssaultPoints();
75 UFUNCTION()
76 virtual void OnRep_AssaultRoles();
77 UFUNCTION()
78 virtual void OnRep_Phase(int32 PreviousAssaultPhase);
79
80 UPROPERTY(ReplicatedUsing = OnRep_AssaultPoints)
81 TArray<AAssaultPoint*> AssaultPoints;
82 UPROPERTY(ReplicatedUsing = OnRep_Phase)
83 int32 AssaultPhase = -1;
84 UPROPERTY(ReplicatedUsing = OnRep_AssaultRoles)
85 TArray<FAssaultTeamInfo> TeamInfos;
86
87 int32 PreviousPhase = -1;
88
89 FString MatchStartAssaultAttackers = "VO_MatchStart_Assault_Attacker";
90 FString MatchStartAssaultDefenders = "VO_MatchStart_Assault_Defender";
91
92public:
93 UFUNCTION(BlueprintCallable,BlueprintPure)
94 static EAssaultRole GetTeamRoleStatic(const AActor* Target);
95 UFUNCTION(BlueprintCallable, BlueprintPure)
96 static EAssaultRole GetRoleFromTeamStatic(const UObject* WorldContextObject, const uint8 TeamID);
97};
EAssaultRole
Definition: ProjectXGameModeAssault.h:13
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAssaultPointsChangeSignature, const TArray< AAssaultPoint * > &, AssaultPoints)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FAssaultPointEventSignature, class AAssaultPoint *, AssaultPoint, int32, OwningTeam, int32, Data)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FAssaultPhaseSignature, int32, NewPhase, int32, PreviousPhase)
Definition: AssaultPoint.h:48
Definition: ProjectXGameModeAssault.h:21
Definition: ProjectXGameMode.h:115
Definition: ProjectXGameStateAssault.h:38
const TArray< FAssaultTeamInfo > & GetAssaultTeamInfos()
Definition: ProjectXGameStateAssault.h:59
Definition: ProjectXGameState.h:158
Definition: ProjectXGameStateAssault.h:15
FAssaultTeamInfo(uint8 TeamIDIn, EAssaultRole RoleIn)
Definition: ProjectXGameStateAssault.h:19