Space Plunder
Loading...
Searching...
No Matches
AMultiplayerHordeGameMode Class Reference

#include <MultiplayerHordeGameMode.h>

Inheritance diagram for AMultiplayerHordeGameMode:
AMultiplayerGameMode AOnlineGameMode IOnlineGM

Public Member Functions

 AMultiplayerHordeGameMode ()
 
virtual void CreateAISpawner ()
 
void OnCreateAISpawner ()
 
- Public Member Functions inherited from AMultiplayerGameMode
 AMultiplayerGameMode ()
 
virtual int32 GetCurrentRound () const
 In Parent

 
void AddDeathToKillFeed (const FPlayerDeath &PlayerDeath, const bool bPlayerDeath=true)
 
- Public Member Functions inherited from AOnlineGameMode
 AOnlineGameMode ()
 
void UpdateScore ()
 
virtual void UpdatePlayerList ()
 
virtual void SpawnPlayer (APlayerController *PlayerController)
 

Protected Member Functions

virtual void BeginPlay () override
 
virtual void StartMatch () override
 
virtual void MatchCountdown () override
 
virtual void StartRound () override
 
virtual void EndRound () override
 
virtual void SpawnedPlayerDeath (FPlayerDeath &PlayerDeath, APawn *PawnThatDied) override
 In Parent

 
virtual void SpawnedAIDeath (FPlayerDeath &PlayerDeath, APawn *PawnThatDied) override
 
void EnemyKilled ()
 
void AISpawned (const AActor *Actor, AAISpawnLocation *Spawner)
 
void OnAISpawned (const AActor *Actor, AAISpawnLocation *Spawner)
 
- Protected Member Functions inherited from AMultiplayerGameMode
virtual void PreMatch () override
 
virtual void ReadyMatch () override
 
virtual void EndMatch () override
 
virtual void RoundCountdown ()
 
virtual void UpdateGameState () override
 
void OnStartRound ()
 
void OnRoundCountdown ()
 
void OnEndRound ()
 
virtual void SetEndRoundCondition ()
 
virtual void ResetEndRoundCondition ()
 
virtual void AddScoreToTeam (const int32 TeamID, const int32 ScoreToAdd)
 
virtual void AddScoreToPlayer (APlayerState *Player, const bool bTeamKill=false, const bool bSelfKill=false)
 
virtual void AddDeathToPlayer (APlayerState *Player, const bool bSelfKill=false)
 
- Protected Member Functions inherited from AOnlineGameMode
virtual void GenericPlayerInitialization (AController *Controller) override
 
virtual void PostLogin (APlayerController *NewPlayer) override
 
virtual void Logout (AController *Exiting) override
 
virtual void SwapPlayerControllers (APlayerController *OldPC, APlayerController *NewPC) override
 
virtual void RegisterPlayer (APlayerController *NewPlayer)
 
int32 GetTotalNumberOfControllers () const
 
virtual void AddPlayerToTeam (APlayerController *PlayerController)
 
virtual FMatchState GetMultiplayerMatchState () const override
 
void DestroyPawn (APawn *Pawn) const
 
void OnPlayerDeath (const FPlayerDeath &PlayerDeath)
 
void OnAIDeath (const FPlayerDeath &PlayerDeath)
 
TArray< FPlayerDeath > & GetAllPlayerDeaths ()
 
TArray< FPlayerDeath > & GetAllAIDeaths ()
 
virtual bool ReadyToStartMatch_Implementation () override
 
void OnPreMatch ()
 
void OnReadyMatch ()
 
void OnStartMatch ()
 
void OnEndMatch ()
 
void OnMatchCountdown ()
 
virtual void SetEndMatchCondition ()
 
virtual bool GetIsMatchOver ()
 
FTransform FindRandomPlayerStart () const
 
FTransform FindRandomAIPlayerStart () const
 
FTransform FindTeamPlayerStart (const int32 TeamID)
 
void LogMissingPointer (const FString &PointerName) const
 
void LogDebugError (const FString &Message) const
 
void LogDebugWarning (const FString &Message) const
 
void LogDebugMessage (const FString &Message, const bool bWarning=false, const bool bError=false) const
 

Protected Attributes

int32 InitialEnemies = 10
 
int32 EnemiesKilledThisRound = 0
 
int32 TotalEnemiesKilled = 0
 
float EnemySpawnGrowthRate = 1.0f
 
int32 EnemiesThisRound = 0
 
int32 EnemiesLeftTillNextRound = 0
 
FAISpawnLocationData SpawnLocationData
 
TArray< class AAISpawnLocation * > AISpawnLocations
 
- Protected Attributes inherited from AMultiplayerGameMode
class AMultiplayerGameStateMultiplayerGameState = nullptr
 Replaced with Parent = UpdateGameState();.
 
int32 GoalScore = 1
 
int32 PlayerKilledScore = 2
 
int32 TeamKillScore =-1
 
int32 AIKilledScore = 1
 
int32 ObjectiveScore = 5
 
float PlayerKilledXP = 100.0f
 
float TeamKilledXP = -100.0f
 
float SelfKilledXP = -25.0f
 
float AIKilledXP = 25.0f
 
bool bEndOnTeamReachingGoal = true
 
bool bPlayerLifeLimit = false
 
int32 PlayerLifePool = 10
 
bool bRoundBased = false
 
bool bRoundsTimed = false
 
bool bRoundLimit = false
 
int32 Round = 0
 
int32 RoundTime = 20
 
int32 RoundTimeMax = 10
 
int32 RoundGoalScore = 1
 
int32 MaxRounds = 10
 
float TimeTillNextRound = 4.0f
 
bool bEndRoundOnTeamReachingGoal = false
 
bool bTeamKillPenalty = true
 
int32 TeamKillPenaltyTime = 3
 
bool bSelfKillPenalty = true
 
int32 SelfKillPenaltyTime = 3
 
bool bShowDeathsInFeed = true
 
bool bShowPlayerDeathsInFeed = true
 
bool bShowAIDeathInFeed = true
 
- Protected Attributes inherited from AOnlineGameMode
TArray< APlayerController * > AllPlayerControllers
 
TMap< int32, TArray< APlayerController * > > TeamPlayerControllers
 
TArray< FPlayerDeathAllPlayerDeaths
 
TArray< FPlayerDeathAllAIDeaths
 
TArray< FPlayerDeathAllDeaths
 
int32 NumberOfTeams = 2
 
TMap< int32, int32 > TeamScores
 
TArray< int32 > TeamIDs
 
bool bFriendlyFireOn = true
 
FString AISpawnTag = "AI"
 
int32 RespawnTime = 3
 
int32 SelfDeathRespawnTimeMultiplier = 2
 
int32 TeamKillDeathRespawnTimeMultiplier = 3
 
bool bMatchTimed = false
 
bool bMatchCountUp = false
 
bool bMatchTimeLimit = false
 
int32 MatchTime = 20
 
int32 MatchTimeLimit = 120
 
bool bTeamSpawns = true
 
bool bMatchOver = false
 
EMultiplayerMode MultiplayerMode = EMultiplayerMode::Default
 
bool bDisableStartTimers = false
 
int32 PreMatchWaitTime = 5
 
float MatchUpdateFrequency = 1.0f
 
int32 ReadyMatchWaitTime = 10
 
TArray< AActor * > PlayerStarts
 
TArray< AActor * > AIPlayerStarts
 
TMap< int32, int32 > LastUsedPlayerStart
 
int32 NumberOfPlayersToStart = 4
 
TMap< int32, TArray< APlayerStart * > > TeamStarts
 
bool bDebuggingMode = false
 
bool bLogPlayerStarts = false
 
bool bLogMatchTime = false
 
bool bLogMatchState = false
 
class IOnlineGSOnlineGameState = nullptr
 

Private Member Functions

void OnSpawnerFinishedSpawning (AAISpawnLocation *Spawner)
 
int32 GetEnemiesPerRound () const
 

Private Attributes

TSubclassOf< class AAISpawnLocationAISpawnLocationClass
 

Additional Inherited Members

- Public Attributes inherited from AMultiplayerGameMode
TMap< int32, TArray< APlayerStart * > > TeamStarts
 
- Public Attributes inherited from AOnlineGameMode
float UpdatePlayerListDelay = 0.3f
 

Constructor & Destructor Documentation

◆ AMultiplayerHordeGameMode()

AMultiplayerHordeGameMode::AMultiplayerHordeGameMode ( )
15{
16 bMatchTimed = false;
17 NumberOfTeams = 1;
18 AIKilledScore = 1.0f;
19 AIKilledXP = 100.0f;
20 bShowAIDeathInFeed = false;
21 bMatchTimed = false;
23 bTeamKillPenalty = false;
25 bTeamSpawns = false;
26 bRoundBased = true;
27 bRoundsTimed = false;
28 bPlayerLifeLimit = true;
29 RoundTime = 20;
31
37
38
39 ConstructorHelpers::FClassFinder<AAISpawnLocation> const AISpawnLocationBP(TEXT("/AIToolKit/Spawners/BP_AISpawnLocation"));
40 if (!ensure(AISpawnLocationBP.Class != nullptr)) return;
41 AISpawnLocationClass = AISpawnLocationBP.Class;
42}
bool bPlayerLifeLimit
Definition MultiplayerGameMode.h:131
bool bTeamKillPenalty
Definition MultiplayerGameMode.h:163
int32 RoundTime
Definition MultiplayerGameMode.h:146
bool bEndOnTeamReachingGoal
Definition MultiplayerGameMode.h:129
bool bShowAIDeathInFeed
Definition MultiplayerGameMode.h:176
int32 AIKilledScore
Definition MultiplayerGameMode.h:116
bool bRoundBased
Definition MultiplayerGameMode.h:138
float AIKilledXP
Definition MultiplayerGameMode.h:126
bool bRoundsTimed
Definition MultiplayerGameMode.h:140
int32 RoundGoalScore
Definition MultiplayerGameMode.h:150
TSubclassOf< class AAISpawnLocation > AISpawnLocationClass
Definition MultiplayerHordeGameMode.h:78
FAISpawnLocationData SpawnLocationData
Definition MultiplayerHordeGameMode.h:49
int32 EnemiesThisRound
Definition MultiplayerHordeGameMode.h:44
bool bTeamSpawns
Definition OnlineGameMode.h:128
int32 NumberOfTeams
Definition OnlineGameMode.h:97
bool bMatchTimed
Definition OnlineGameMode.h:117
EMultiplayerMode MultiplayerMode
Definition OnlineGameMode.h:132
int32 AmountToSpawn
Definition AIDataTypes.h:717
float TimeBetweenSpawnsMax
Definition AIDataTypes.h:723
EAIStateType CharacterState
Definition AIDataTypes.h:730
float TimeBetweenSpawnsMin
Definition AIDataTypes.h:721
float InitialDelay
Definition AIDataTypes.h:719

Member Function Documentation

◆ AISpawned()

void AMultiplayerHordeGameMode::AISpawned ( const AActor * Actor,
AAISpawnLocation * Spawner )
protected
243{
244 if(Actor == nullptr || Spawner == nullptr){if(bDebuggingMode){UE_LOG(LogCustomALS,Warning,TEXT("AISpawned IN Horde Failed"));}return;}
245 UHealthComponentBase* HealthComponent = Actor->GetComponentByClass<UHealthComponentBase>();
246 if(HealthComponent == nullptr){return;}
247 HealthComponent->OnDeath.AddUniqueDynamic(Spawner, &AAISpawnLocation::AIDeath);
248 OnAISpawned(Actor, Spawner);
249}
void AIDeath(AActor *OwningActor, EDeathType DeathType, AActor *DeathCauser, AController *DeathInstigator)
Definition AISpawnLocation.cpp:212
void OnAISpawned(const AActor *Actor, AAISpawnLocation *Spawner)
bool bDebuggingMode
Definition OnlineGameMode.h:212

◆ BeginPlay()

void AMultiplayerHordeGameMode::BeginPlay ( )
overrideprotectedvirtual

Reimplemented from AMultiplayerGameMode.

102{
103 Super::BeginPlay();
104 TArray<FInputDeviceId> InputDevices;
105 UInputDeviceLibrary::GetAllConnectedInputDevices(InputDevices);
106 for(int32 i = 0; i < InputDevices.Num(); i++)
107 {
108 APlayerController* NewPlayerController = UGameplayStatics::CreatePlayer(GetWorld(), i);
109 if(NewPlayerController != nullptr)
110 {
111 // AllLocalPlayerControllers.AddUnique(NewPlayerController);
112 AllPlayerControllers.AddUnique(NewPlayerController);
113 }
114 }
115 if(bDebuggingMode){UE_LOG(LogCustomALS, Warning, TEXT("Current Input Devices: %i"), InputDevices.Num());}
116
117}
TArray< APlayerController * > AllPlayerControllers
Definition OnlineGameMode.h:57

◆ CreateAISpawner()

void AMultiplayerHordeGameMode::CreateAISpawner ( )
virtual
78{
80 AActor* SpawnLocationTempActor = UGameplayStatics::BeginDeferredActorSpawnFromClass(this, AISpawnLocationClass, FindRandomAIPlayerStart(), ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn);
81 if(SpawnLocationTempActor == nullptr){if(bDebuggingMode){UE_LOG(LogCustomALS, Warning, TEXT("SpawnLocationTempActor Failed"))};return;}
82
84
85
86 AAISpawnLocation* SpawnLocationTemp = Cast<AAISpawnLocation>(SpawnLocationTempActor);
87 if(SpawnLocationTemp == nullptr){if(bDebuggingMode){UE_LOG(LogCustomALS, Warning, TEXT("SpawnLocationTemp Cast Failed"))};return;}
88 SpawnLocationTemp->SetSpawnLocationData(SpawnLocationData);
89
90 AActor* SpawnLocationActor = UGameplayStatics::FinishSpawningActor(SpawnLocationTemp, FindRandomAIPlayerStart());
91 if(SpawnLocationActor == nullptr){if(bDebuggingMode){UE_LOG(LogCustomALS, Warning, TEXT("SpawnLocationActor Failed"))};return;}
92 AAISpawnLocation* SpawnLocation = Cast<AAISpawnLocation>(SpawnLocationActor);
93 if(SpawnLocation == nullptr){if(bDebuggingMode){UE_LOG(LogCustomALS, Warning, TEXT("SpawnLocation Cast Failed"))};return;}
94 // SpawnLocation->DispatchBeginPlay();
95 SpawnLocation->OnAISpawned.AddUniqueDynamic(this, &AMultiplayerHordeGameMode::AISpawned);
97
98 AISpawnLocations.Add(SpawnLocation);
99}
Definition AISpawnLocation.h:17
FOnFinishedSpawning OnFinishedSpawning
Definition AISpawnLocation.h:26
void SetSpawnLocationData(const FAISpawnLocationData Data)
Definition AISpawnLocation.h:35
FOnAISpawned OnAISpawned
Definition AISpawnLocation.h:24
void OnSpawnerFinishedSpawning(AAISpawnLocation *Spawner)
Definition MultiplayerHordeGameMode.cpp:252
TArray< class AAISpawnLocation * > AISpawnLocations
Definition MultiplayerHordeGameMode.h:66
void AISpawned(const AActor *Actor, AAISpawnLocation *Spawner)
Definition MultiplayerHordeGameMode.cpp:242
FTransform FindRandomAIPlayerStart() const
Definition OnlineGameMode.cpp:539

◆ EndRound()

void AMultiplayerHordeGameMode::EndRound ( )
overrideprotectedvirtual

Reimplemented from AMultiplayerGameMode.

120{
121 Super::EndRound();
123}
int32 EnemiesKilledThisRound
Definition MultiplayerHordeGameMode.h:36

◆ EnemyKilled()

void AMultiplayerHordeGameMode::EnemyKilled ( )
protected
228{
231 // UE_LOG(LogTemp,Warning,TEXT("Round: %i Eneimes Killed: %i Enemies this Round: %i"), Round, EnemiesKilled, GetEnemiesPerRound());
232
234 {
235 UE_LOG(LogCustomALS,Warning,TEXT("Next Round"));
236 EndRound();
237 }
238 UpdateScore();
240}
int32 TotalEnemiesKilled
Definition MultiplayerHordeGameMode.h:38
virtual void EndRound() override
Definition MultiplayerHordeGameMode.cpp:119
int32 EnemiesLeftTillNextRound
Definition MultiplayerHordeGameMode.h:46
void UpdateScore()
Definition OnlineGameMode.cpp:25

◆ GetEnemiesPerRound()

int32 AMultiplayerHordeGameMode::GetEnemiesPerRound ( ) const
private
265{
266 if(Round <= 0){return InitialEnemies + Round;}
267 const float Result = InitialEnemies * pow(EnemySpawnGrowthRate, Round);
268 return static_cast<int32>(Result);
269}
int32 Round
Definition MultiplayerGameMode.h:144
float EnemySpawnGrowthRate
Definition MultiplayerHordeGameMode.h:41
int32 InitialEnemies
Definition MultiplayerHordeGameMode.h:34

◆ MatchCountdown()

void AMultiplayerHordeGameMode::MatchCountdown ( )
overrideprotectedvirtual

Loop while in Match

Reimplemented from AMultiplayerGameMode.

54{
55 Super::MatchCountdown();
56}

◆ OnAISpawned()

void AMultiplayerHordeGameMode::OnAISpawned ( const AActor * Actor,
AAISpawnLocation * Spawner )
protected

◆ OnCreateAISpawner()

void AMultiplayerHordeGameMode::OnCreateAISpawner ( )

◆ OnSpawnerFinishedSpawning()

void AMultiplayerHordeGameMode::OnSpawnerFinishedSpawning ( AAISpawnLocation * Spawner)
private
253{
254 if(Spawner == nullptr){return;}
255 AAISpawnLocation* SpawnLocation = Cast<AAISpawnLocation>(Spawner);
256 if(SpawnLocation == nullptr){return;}
257 if(AISpawnLocations.Contains(Spawner))
258 {
259 AISpawnLocations.Remove(SpawnLocation);
260 }
261 Spawner->Destroy();
262}

◆ SpawnedAIDeath()

void AMultiplayerHordeGameMode::SpawnedAIDeath ( FPlayerDeath & PlayerDeath,
APawn * PawnThatDied )
overrideprotectedvirtual

Reimplemented from AMultiplayerGameMode.

171{
172 Super::SpawnedAIDeath(PlayerDeath, PawnThatDied);
173 EnemyKilled();
174}
void EnemyKilled()
Definition MultiplayerHordeGameMode.cpp:227

◆ SpawnedPlayerDeath()

void AMultiplayerHordeGameMode::SpawnedPlayerDeath ( FPlayerDeath & PlayerDeath,
APawn * PawnThatDied )
overrideprotectedvirtual

In Parent

Reimplemented from AMultiplayerGameMode.

126{
127 Super::SpawnedPlayerDeath(PlayerDeath, PawnThatDied);
128 const int32 Players = AllPlayerControllers.Num();
129 if(bDebuggingMode){UE_LOG(LogCustomALS, Warning, TEXT("Num Of PCs %i, LifePool: %i"), Players, PlayerLifePool);}
130 if(PlayerLifePool <= -Players)
131 {
133 EndMatch();
134 return;
135 }
136 if(PlayerLifePool <= 0)
137 {
139 if(PlayerLifePool <= -Players)
140 {
142 EndMatch();
143 return;
144 }
145 //- Dont respawn any more players //
146 return;
147 }
149 Super::SpawnedPlayerDeath(PlayerDeath, PawnThatDied);
150
151 // PlayerLifePool--;
152 // GoalScore = PlayerLifePool;
153 // if(PlayerLifePool <= 0)
154 // {
155 // EndMatch();
156 // //- End Game
157 // }
158 UpdateScore();
159
160 // PlayerLifePool--;
161 // // GoalScore = PlayerLifePool;
162 // if(PlayerLifePool <= 0)
163 // {
164 // EndMatch();
165 // //- End Game
166 // }
167 // UpdateScore();
168}
int32 PlayerLifePool
Definition MultiplayerGameMode.h:133
virtual void EndMatch() override
Definition MultiplayerGameMode.cpp:253
virtual void SetEndMatchCondition()
Definition OnlineGameMode.h:174

◆ StartMatch()

void AMultiplayerHordeGameMode::StartMatch ( )
overrideprotectedvirtual

Start logic, Spawn in Players

Reimplemented from AMultiplayerGameMode.

46{
47 Super::StartMatch();
48
49 if(SpawnLocationData.ActorToSpawn == nullptr){UE_LOG(LogCustomALS, Error, TEXT("Actor to Spawn NULL in Horde GM"));}
50
51}
TSubclassOf< APawn > ActorToSpawn
Definition AIDataTypes.h:715

◆ StartRound()

void AMultiplayerHordeGameMode::StartRound ( )
overrideprotectedvirtual

Reimplemented from AMultiplayerGameMode.

60{
61 Super::StartRound();
62 if(bMatchOver){return;}
63 //- Spawn Enemies //
67 if(bDebuggingMode){UE_LOG(LogTemp,Warning,TEXT("Round: %i Enemies TO KILL: %i "), Round, EnemiesLeftTillNextRound);}
68 if(EnemiesThisRound > 10)
69 {
71 }
75}
int32 GetEnemiesPerRound() const
Definition MultiplayerHordeGameMode.cpp:264
virtual void CreateAISpawner()
Definition MultiplayerHordeGameMode.cpp:77
bool bMatchOver
Definition OnlineGameMode.h:130

Member Data Documentation

◆ AISpawnLocationClass

TSubclassOf<class AAISpawnLocation> AMultiplayerHordeGameMode::AISpawnLocationClass
private

◆ AISpawnLocations

TArray<class AAISpawnLocation*> AMultiplayerHordeGameMode::AISpawnLocations
protected

◆ EnemiesKilledThisRound

int32 AMultiplayerHordeGameMode::EnemiesKilledThisRound = 0
protected

◆ EnemiesLeftTillNextRound

int32 AMultiplayerHordeGameMode::EnemiesLeftTillNextRound = 0
protected

◆ EnemiesThisRound

int32 AMultiplayerHordeGameMode::EnemiesThisRound = 0
protected

◆ EnemySpawnGrowthRate

float AMultiplayerHordeGameMode::EnemySpawnGrowthRate = 1.0f
protected

◆ InitialEnemies

int32 AMultiplayerHordeGameMode::InitialEnemies = 10
protected

◆ SpawnLocationData

FAISpawnLocationData AMultiplayerHordeGameMode::SpawnLocationData
protected

◆ TotalEnemiesKilled

int32 AMultiplayerHordeGameMode::TotalEnemiesKilled = 0
protected

The documentation for this class was generated from the following files: