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

#include <MultiplayerGameMode.h>

Inheritance diagram for AMultiplayerGameMode:
AOnlineGameMode IOnlineGM AMultiplayerHordeGameMode

Public Member Functions

 AMultiplayerGameMode ()
 
virtual void BeginPlay () override
 
virtual int32 GetCurrentRound () const
 In Parent

 
virtual void SpawnedPlayerDeath (FPlayerDeath &PlayerDeath, APawn *PawnThatDied) override
 In Parent

 
virtual void SpawnedAIDeath (FPlayerDeath &PlayerDeath, APawn *PawnThatDied) override
 
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)
 

Public Attributes

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

Protected Member Functions

virtual void PreMatch () override
 
virtual void ReadyMatch () override
 
virtual void StartMatch () override
 
virtual void EndMatch () override
 
virtual void MatchCountdown () override
 
virtual void StartRound ()
 
virtual void RoundCountdown ()
 
virtual void EndRound ()
 
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

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 Attributes

FMatchState RoundMatchState
 
FTimerHandle RoundTimerHandle
 
FTimerHandle NextRoundTimerHandle
 
bool bEndRoundCondition = false
 

Constructor & Destructor Documentation

◆ AMultiplayerGameMode()

AMultiplayerGameMode::AMultiplayerGameMode ( )
24{
25
26}

Member Function Documentation

◆ AddDeathToKillFeed()

void AMultiplayerGameMode::AddDeathToKillFeed ( const FPlayerDeath & PlayerDeath,
const bool bPlayerDeath = true )
709{
710 if(!bShowDeathsInFeed){return;}
711 if(MultiplayerGameState == nullptr){UE_LOG(LogCustomALSGameMode,Warning,TEXT("MultiplayerGameState in Multiplayer GM"));return;}
712 MultiplayerGameState->ClientAddDeathToKillFeed(PlayerDeath, bPlayerDeath);
713 return;
714 for(APlayerController* PlayerController: AllPlayerControllers)
715 {
716 ACustomPlayerController* CustomPlayerController = Cast<ACustomPlayerController>(PlayerController);
717 if(CustomPlayerController != nullptr)
718 {
719 CustomPlayerController->ClientAddDeathToKillFeed(PlayerDeath, bPlayerDeath);
720 }
721 }
722}
Definition CustomPlayerController.h:24
void ClientAddDeathToKillFeed(FPlayerDeath PlayerDeath, bool bPlayerDeath=true)
class AMultiplayerGameState * MultiplayerGameState
Replaced with Parent = UpdateGameState();.
Definition MultiplayerGameMode.h:106
bool bShowDeathsInFeed
Definition MultiplayerGameMode.h:172
virtual void ClientAddDeathToKillFeed(FPlayerDeath PlayerDeath, bool bPlayerDeath)
TArray< APlayerController * > AllPlayerControllers
Definition OnlineGameMode.h:57

◆ AddDeathToPlayer()

void AMultiplayerGameMode::AddDeathToPlayer ( APlayerState * Player,
const bool bSelfKill = false )
protectedvirtual
690{
691 AMenuSystemPlayerState* CustomVictimPlayerState = Cast<AMenuSystemPlayerState>(Player);
692 if(CustomVictimPlayerState != nullptr)
693 {
694 CustomVictimPlayerState->SetMultiplayerStats(CustomVictimPlayerState->GetMultiplayerStats().AddDeath());
695 int32 RespawnTimeFull = RespawnTime;
696 if(bSelfKill)
697 {
698 RespawnTimeFull *= SelfDeathRespawnTimeMultiplier;
699 }
700 if(PlayerLifePool >= 0)
701 {
702 CustomVictimPlayerState->StartRespawnTimer(RespawnTimeFull);
703 CustomVictimPlayerState->OnReadyToRespawn.AddUniqueDynamic(this, &AOnlineGameMode::SpawnPlayer);
704 }
705 }
706}
Definition MenuSystemPlayerState.h:19
FMultiplayerPlayerStats GetMultiplayerStats() const
Definition MenuSystemPlayerState.h:59
void SetMultiplayerStats(const FMultiplayerPlayerStats UpdatedMultiplayerStats)
Definition MenuSystemPlayerState.h:61
FOnReadyToRespawn OnReadyToRespawn
Definition MenuSystemPlayerState.h:26
void StartRespawnTimer(const int32 WaitTime)
Definition MenuSystemPlayerState.cpp:77
int32 PlayerLifePool
Definition MultiplayerGameMode.h:133
int32 RespawnTime
Definition OnlineGameMode.h:109
int32 SelfDeathRespawnTimeMultiplier
Definition OnlineGameMode.h:111
virtual void SpawnPlayer(APlayerController *PlayerController)
Definition OnlineGameMode.cpp:266
FMultiplayerPlayerStats AddDeath()
Definition BaseData.h:1223

◆ AddScoreToPlayer()

void AMultiplayerGameMode::AddScoreToPlayer ( APlayerState * Player,
const bool bTeamKill = false,
const bool bSelfKill = false )
protectedvirtual
664{
665 if(Player == nullptr){return;}
666 AMenuSystemPlayerState* CustomPlayerState = Cast<AMenuSystemPlayerState>(Player);
667 if(CustomPlayerState != nullptr)
668 {
669 if(!bSelfKill && !bTeamKill)
670 {
671 CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddKill());
672 CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddXP(PlayerKilledXP));
673 }
674 if(bTeamKill && bTeamKillPenalty)
675 {
676 CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddTeamKill());
677 CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddXP(TeamKilledXP));
678 CustomPlayerState->AddRespawnPenalty(TeamKillPenaltyTime);
679 }
680 if(bSelfKill && bSelfKillPenalty)
681 {
682 CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddSelfKill());
683 CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddXP(SelfKilledXP));
684 CustomPlayerState->AddRespawnPenalty(SelfKillPenaltyTime);
685 }
686 }
687}
void AddRespawnPenalty(const int32 Penalty=1.0f)
Definition MenuSystemPlayerState.h:72
int32 SelfKillPenaltyTime
Definition MultiplayerGameMode.h:169
bool bSelfKillPenalty
Definition MultiplayerGameMode.h:167
bool bTeamKillPenalty
Definition MultiplayerGameMode.h:163
float TeamKilledXP
Definition MultiplayerGameMode.h:122
float PlayerKilledXP
Definition MultiplayerGameMode.h:120
int32 TeamKillPenaltyTime
Definition MultiplayerGameMode.h:165
float SelfKilledXP
Definition MultiplayerGameMode.h:124
FMultiplayerPlayerStats AddKill()
Definition BaseData.h:1207
FMultiplayerPlayerStats AddSelfKill()
Definition BaseData.h:1217
FMultiplayerPlayerStats AddTeamKill()
Definition BaseData.h:1212
FMultiplayerPlayerStats AddXP(const float Amount)
Definition BaseData.h:1228

◆ AddScoreToTeam()

void AMultiplayerGameMode::AddScoreToTeam ( const int32 TeamID,
const int32 ScoreToAdd )
protectedvirtual
653{
654 const int32* PreviousAttackerScorePtr = TeamScores.Find(TeamID);
655 int32 PreviousAttackerScore = 0;
656 if(PreviousAttackerScorePtr != nullptr)
657 {
658 PreviousAttackerScore = *PreviousAttackerScorePtr;
659 }
660 TeamScores.Add(TeamID, (PreviousAttackerScore + ScoreToAdd));
661}
TMap< int32, int32 > TeamScores
Definition OnlineGameMode.h:99

◆ BeginPlay()

void AMultiplayerGameMode::BeginPlay ( )
overridevirtual

In Parent

Reimplemented from AOnlineGameMode.

Reimplemented in AMultiplayerHordeGameMode.

29{
30 Super::BeginPlay();
33 {
36 }
37 // GetAllPlayerStarts();
38 MultiplayerGameState = GetGameState<AMultiplayerGameState>();
39 if(MultiplayerGameState == nullptr){UE_LOG(LogCustomALSGameMode,Error,TEXT("Game State Missing in Multiplayer Game Mode"));}
40
42 // MultiplayerMatchState.MatchState = EMatchState::PreMatch;
43 // if(MultiplayerGameState != nullptr)
44 // {
45 // MultiplayerGameState->SetMultiplayerMatchState(MultiplayerMatchState);
46 // }
47 // GetWorld()->GetTimerManager().SetTimer(PreMatchTimerHandle, this, &AMultiplayerGameMode::PreMatch, 1.0f, true);
48 // SetupScore();
49}
int32 RoundTimeMax
Definition MultiplayerGameMode.h:147
int32 RoundTime
Definition MultiplayerGameMode.h:146
int32 ReadyMatchWaitTime
Definition OnlineGameMode.h:142
bool bDisableStartTimers
Definition OnlineGameMode.h:136
int32 PreMatchWaitTime
Definition OnlineGameMode.h:138

◆ EndMatch()

void AMultiplayerGameMode::EndMatch ( )
overrideprotectedvirtual

Condition Met to finish match

In Parent

Reimplemented from AOnlineGameMode.

254{
256 // bMatchOver = true;
257 // GetWorld()->GetTimerManager().ClearTimer(MatchTimerHandle);
258 // MultiplayerMatchState.MatchState = EMatchState::PostMatch;
259 // MultiplayerMatchState.TimeRemaining = 0;//@TODO Add in Lobby up part
260 GetWorld()->GetTimerManager().ClearTimer(RoundTimerHandle);
261 GetWorld()->GetTimerManager().ClearTimer(NextRoundTimerHandle);
262
263 Super::EndMatch();
265 //@ TODO Add Client Match Over
266 // MultiplayerGameState->ClientMatchOver();
267
268 // if(MultiplayerGameState != nullptr)
269 // {
270 // MultiplayerGameState->SetMultiplayerMatchState(MultiplayerMatchState);
271 // MultiplayerGameState->ClientMatchOver();
272 // }
273 return;
274
275 for(APlayerState* PlayerState : MultiplayerGameState->PlayerArray)
276 {
277 if(PlayerState->GetPawn() != nullptr)
278 {
279 PlayerState->GetPawn()->GetMovementComponent()->StopMovementImmediately();
280 }
281 // if(PlayerState->GetPlayerController() != nullptr)
282 // {
283 // FInputModeUIOnly InputUIOnly;
284 // PlayerState->GetPlayerController()->SetInputMode(InputUIOnly);
285 // }
286 }
287}
FTimerHandle NextRoundTimerHandle
Definition MultiplayerGameMode.h:234
virtual void UpdateGameState() override
Definition MultiplayerGameMode.cpp:735
FTimerHandle RoundTimerHandle
Definition MultiplayerGameMode.h:233

◆ EndRound()

void AMultiplayerGameMode::EndRound ( )
protectedvirtual

Reimplemented in AMultiplayerHordeGameMode.

183{
185 OnEndRound();
186 GetWorld()->GetTimerManager().ClearTimer(RoundTimerHandle);
190 RoundTime = 0;
192 // if(MultiplayerGameState != nullptr)
193 // {
194 // MultiplayerGameState->SetMultiplayerMatchState(MultiplayerMatchState);
195 // }
196 if(bDebuggingMode && bLogMatchState){UE_LOG(LogCustomALSGameMode,Warning,TEXT("Round OVER"));}
197 if(bRoundLimit && Round >= MaxRounds)
198 {
199 EndMatch();
200 }
202 //@ TODO Add in this
203 // MultiplayerGameState->ClientRoundOver();
204
205
206 // if(MultiplayerGameState != nullptr)
207 // {
208 // MultiplayerGameState->SetMultiplayerMatchState(MultiplayerMatchState);
209 // MultiplayerGameState->ClientRoundOver();
210 // }
211 if(GetIsMatchOver())
212 {
213
214 }
215 else
216 {
217 GetWorld()->GetTimerManager().SetTimer(NextRoundTimerHandle, this, &AMultiplayerGameMode::StartRound,TimeTillNextRound);
218 }
219}
int32 MaxRounds
Definition MultiplayerGameMode.h:152
virtual void StartRound()
Definition MultiplayerGameMode.cpp:126
bool bRoundLimit
Definition MultiplayerGameMode.h:142
float TimeTillNextRound
Definition MultiplayerGameMode.h:154
int32 Round
Definition MultiplayerGameMode.h:144
FMatchState RoundMatchState
Definition MultiplayerGameMode.h:229
virtual void ResetEndRoundCondition()
Definition MultiplayerGameMode.h:218
virtual void EndMatch() override
Definition MultiplayerGameMode.cpp:253
bool bDebuggingMode
Definition OnlineGameMode.h:212
virtual bool GetIsMatchOver()
Definition OnlineGameMode.h:176
bool bLogMatchState
Definition OnlineGameMode.h:218
int32 RoundTimeRemaining
Definition BaseData.h:1094
EMatchState RoundState
Definition BaseData.h:1088

◆ GetCurrentRound()

virtual int32 AMultiplayerGameMode::GetCurrentRound ( ) const
inlinevirtual

In Parent

73{return Round;};

◆ MatchCountdown()

void AMultiplayerGameMode::MatchCountdown ( )
overrideprotectedvirtual

Loop while in Match

Reimplemented from AOnlineGameMode.

Reimplemented in AMultiplayerHordeGameMode.

223{
224 Super::MatchCountdown();
225
226 //@ TODO Keep going with OnlineGameMode Moving ///
227 //- Multiplayer
229 {
230 for(const auto& Team : TeamScores)
231 {
232 if(Team.Value >= GoalScore)
233 {
234 if(bDebuggingMode){UE_LOG(LogCustomALSGameMode,Warning,TEXT("AMultiplayerGameMode::MatchCountdown Team: %i WON, %i Points"), Team.Key, Team.Value);}
236 }
237 }
238 }
239 //- Multiplayer
240
241 // if(bMatchTimed && MatchTime <= 0)
242 // {
243 // GetWorld()->GetTimerManager().ClearTimer(MatchTimerHandle);
244 // EndMatch();
245 // }
246 // if(GetIsMatchOver())
247 // {
248 // GetWorld()->GetTimerManager().ClearTimer(MatchTimerHandle);
249 // EndMatch();
250 // }
251}
int32 GoalScore
Definition MultiplayerGameMode.h:110
bool bEndOnTeamReachingGoal
Definition MultiplayerGameMode.h:129
virtual void SetEndMatchCondition()
Definition OnlineGameMode.h:174

◆ OnEndRound()

void AMultiplayerGameMode::OnEndRound ( )
protected

◆ OnRoundCountdown()

void AMultiplayerGameMode::OnRoundCountdown ( )
protected

◆ OnStartRound()

void AMultiplayerGameMode::OnStartRound ( )
protected

◆ PreMatch()

void AMultiplayerGameMode::PreMatch ( )
overrideprotectedvirtual

Waiting for everyone to load in

Reimplemented from AOnlineGameMode.

78{
79 Super::PreMatch();
80 // if(MultiplayerGameState != nullptr)
81 // {
82 // MultiplayerGameState->SetMultiplayerMatchState(MultiplayerMatchState);
83 // }
84 // if(bDebuggingMode && bLogMatchTime){UE_LOG(LogCustomALSGameMode,Warning,TEXT("Pre Match Wait: %i "), PreMatchWaitTime);}
85 // if(PreMatchWaitTime <= 0 || GetTotalNumberOfControllers() >= NumberOfPlayersToStart)
86 // {
87 // GetWorld()->GetTimerManager().ClearTimer(PreMatchTimerHandle);
88 // GetWorld()->GetTimerManager().SetTimer(ReadyMatchTimerHandle, this, &AMultiplayerGameMode::ReadyMatch, 1.0f, true);
89 // }
90}

◆ ReadyMatch()

void AMultiplayerGameMode::ReadyMatch ( )
overrideprotectedvirtual

Everyone Ready to Start

Reimplemented from AOnlineGameMode.

94{
95 Super::ReadyMatch();
96}

◆ ResetEndRoundCondition()

virtual void AMultiplayerGameMode::ResetEndRoundCondition ( )
inlineprotectedvirtual
218{bEndRoundCondition = false;};
bool bEndRoundCondition
Definition MultiplayerGameMode.h:238

◆ RoundCountdown()

void AMultiplayerGameMode::RoundCountdown ( )
protectedvirtual

Use Update GameState?

144{
147 if(bRoundsTimed)
148 {
149 RoundTime--;
151 // UpdateMatchState();
152 if(bDebuggingMode && bLogMatchTime){UE_LOG(LogCustomALSGameMode,Warning,TEXT("Rounnd Time: %i "), RoundTime);}
153 }
157 {
158 for(const auto& Team : TeamScores)
159 {
160 //@TODO Temp, change to function that can be overridden
161 if(Team.Value >= RoundGoalScore * Round)
162 {
163 if(bDebuggingMode){UE_LOG(LogCustomALSGameMode,Warning,TEXT("Team: %i WON, %i Points"), Team.Key, Team.Value);}
165 }
166 }
167 }
168 if(bRoundsTimed && RoundTime <= 0)
169 {
171 }
172 if(bRoundLimit && Round >= MaxRounds)
173 {
175 }
177 {
178 EndRound();
179 }
180}
virtual void EndRound()
Definition MultiplayerGameMode.cpp:182
virtual void SetEndRoundCondition()
Definition MultiplayerGameMode.h:216
bool bRoundsTimed
Definition MultiplayerGameMode.h:140
int32 RoundGoalScore
Definition MultiplayerGameMode.h:150
bool bEndRoundOnTeamReachingGoal
Definition MultiplayerGameMode.h:156
bool bLogMatchTime
Definition OnlineGameMode.h:216

◆ SetEndRoundCondition()

virtual void AMultiplayerGameMode::SetEndRoundCondition ( )
inlineprotectedvirtual
216{bEndRoundCondition = true;};

◆ SpawnedAIDeath()

void AMultiplayerGameMode::SpawnedAIDeath ( FPlayerDeath & PlayerDeath,
APawn * PawnThatDied )
overridevirtual

In Parent

Reimplemented from AOnlineGameMode.

Reimplemented in AMultiplayerHordeGameMode.

577{
578 Super::SpawnedAIDeath(PlayerDeath, PawnThatDied);
579 const int32* PreviousAttackerScorePtr = TeamScores.Find(PlayerDeath.AttackerTeamID);
580 int32 PointsToAdd = PlayerKilledScore;
581 if(!PlayerDeath.bTeamKill)
582 {
584 }
586 {
587 AddDeathToKillFeed(PlayerDeath);
588 }
590 // UpdateScore();
591 // OnAIDeath(PlayerDeath);
592
593 AddScoreToPlayer(PlayerDeath.AttackerPlayerState, PlayerDeath.bTeamKill, PlayerDeath.bSelfDeath);
594
595 // AMenuSystemPlayerState* CustomPlayerState = Cast<AMenuSystemPlayerState>(PlayerDeath.AttackerPlayerState);
596 // if(CustomPlayerState != nullptr)
597 // {
598 // CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddKill());
599 // CustomPlayerState->SetMultiplayerStats(CustomPlayerState->GetMultiplayerStats().AddXP(AIKilledXP));
600 // }
601}
virtual void AddScoreToPlayer(APlayerState *Player, const bool bTeamKill=false, const bool bSelfKill=false)
Definition MultiplayerGameMode.cpp:663
bool bShowAIDeathInFeed
Definition MultiplayerGameMode.h:176
int32 AIKilledScore
Definition MultiplayerGameMode.h:116
int32 PlayerKilledScore
Definition MultiplayerGameMode.h:112
virtual void AddScoreToTeam(const int32 TeamID, const int32 ScoreToAdd)
Definition MultiplayerGameMode.cpp:652
void AddDeathToKillFeed(const FPlayerDeath &PlayerDeath, const bool bPlayerDeath=true)
Definition MultiplayerGameMode.cpp:708
bool bSelfDeath
Definition BaseData.h:646
int32 AttackerTeamID
Definition BaseData.h:631
class APlayerState * AttackerPlayerState
Definition BaseData.h:626
bool bTeamKill
Definition BaseData.h:648

◆ SpawnedPlayerDeath()

void AMultiplayerGameMode::SpawnedPlayerDeath ( FPlayerDeath & PlayerDeath,
APawn * PawnThatDied )
overridevirtual

In Parent

Reimplemented from AOnlineGameMode.

Reimplemented in AMultiplayerHordeGameMode.

555{
556 Super::SpawnedPlayerDeath(PlayerDeath, PawnThatDied);
557 int32 PointsToAdd = PlayerKilledScore;
558 if(PlayerDeath.bTeamKill)
559 {
561 {
562 PointsToAdd = TeamKillScore;
563 }
564 else
565 {
566 PointsToAdd = 0;
567 }
568 }
569 AddScoreToTeam(PlayerDeath.AttackerTeamID, PointsToAdd);
571
572 AddScoreToPlayer(PlayerDeath.AttackerPlayerState, PlayerDeath.bTeamKill, PlayerDeath.bSelfDeath);
573 AddDeathToPlayer(PlayerDeath.VictimPlayerState, PlayerDeath.bSelfDeath);
574}
virtual void AddDeathToPlayer(APlayerState *Player, const bool bSelfKill=false)
Definition MultiplayerGameMode.cpp:689
bool bShowPlayerDeathsInFeed
Definition MultiplayerGameMode.h:174
int32 TeamKillScore
Definition MultiplayerGameMode.h:114
class APlayerState * VictimPlayerState
Definition BaseData.h:628

◆ StartMatch()

void AMultiplayerGameMode::StartMatch ( )
overrideprotectedvirtual

Start logic, Spawn in Players

Reimplemented from AOnlineGameMode.

Reimplemented in AMultiplayerHordeGameMode.

99{
100 Super::StartMatch();
101
102 for(int32 TeamID : TeamIDs)
103 {
104 //- Set the team score to 0 //
105 const int32* PreviousScorePtr = TeamScores.Find(TeamID);
106 int32 PreviousScore = 0;
107 if(PreviousScorePtr != nullptr)
108 {
109 PreviousScore = *PreviousScorePtr;
110 }
111 TeamScores.Add(TeamID, PreviousScore);
112 }
113 // for(APlayerController* PlayerController : AllPlayerControllers)
114 // {
115 // SpawnPlayer(PlayerController);
116 // }
117 if(bRoundBased)
118 {
119 GetWorld()->GetTimerManager().SetTimer(NextRoundTimerHandle, this, &AMultiplayerGameMode::StartRound,TimeTillNextRound);
120 }
121 //@TODO
122 // GetWorld()->GetTimerManager().SetTimer(SetupScoreTimerHandle, this, &AMultiplayerGameMode::SetupScore,TimeTillNextRound);
123}
bool bRoundBased
Definition MultiplayerGameMode.h:138
TArray< int32 > TeamIDs
Definition OnlineGameMode.h:101

◆ StartRound()

void AMultiplayerGameMode::StartRound ( )
protectedvirtual

Reimplemented in AMultiplayerHordeGameMode.

127{
128 OnStartRound();
130 if(bMatchOver){return;}
131 if(bDebuggingMode && bLogMatchState){UE_LOG(LogCustomALSGameMode,Warning,TEXT("Round Start"));}
132 ++Round;
134 GetWorld()->GetTimerManager().ClearTimer(NextRoundTimerHandle);
135
136 GetWorld()->GetTimerManager().SetTimer(RoundTimerHandle, this, &AMultiplayerGameMode::RoundCountdown, 1.0f, true);
138 if(MultiplayerGameState == nullptr){UE_LOG(LogCustomALSGameMode,Warning,TEXT("MultiplayerGameState in Multiplayer GM"));return;}
140 UpdateScore();
141}
virtual void RoundCountdown()
Definition MultiplayerGameMode.cpp:143
virtual void SetRound(const int32 Num)
bool bMatchOver
Definition OnlineGameMode.h:130
void UpdateScore()
Definition OnlineGameMode.cpp:25

◆ UpdateGameState()

void AMultiplayerGameMode::UpdateGameState ( )
overrideprotectedvirtual

Reimplemented from AOnlineGameMode.

736{
737 Super::UpdateGameState();
738 //-
739 //@ TODO
740 // Cast to IMultiplayerGS
741 // if(OnlineGameState == nullptr)
742 // {
743 // OnlineGameState = Cast<IOnlineGS>(GameState);
744 // }
745 // if(OnlineGameState == nullptr){UE_LOG(LogCustomALSGameMode,Error,TEXT("Game State Missing in AOnlineGameMode"));}
746 // if(OnlineGameState != nullptr)
747 // {
748
749
750 // if(MultiplayerGameState == nullptr){UE_LOG(LogCustomALSGameMode,Warning,TEXT("MultiplayerGameState in Multiplayer GM"));return;}
751 //- Functions to Add to IMultiplayerGS //
752 // MultiplayerGameState->SetScore(ScoresArray);
753 // MultiplayerGameState->SetScoreGoal(GoalScore);
754 // MultiplayerGameState->SetRound(Round);
755
756}

Member Data Documentation

◆ AIKilledScore

int32 AMultiplayerGameMode::AIKilledScore = 1
protected

◆ AIKilledXP

float AMultiplayerGameMode::AIKilledXP = 25.0f
protected

◆ bEndOnTeamReachingGoal

bool AMultiplayerGameMode::bEndOnTeamReachingGoal = true
protected

◆ bEndRoundCondition

bool AMultiplayerGameMode::bEndRoundCondition = false
private

◆ bEndRoundOnTeamReachingGoal

bool AMultiplayerGameMode::bEndRoundOnTeamReachingGoal = false
protected

◆ bPlayerLifeLimit

bool AMultiplayerGameMode::bPlayerLifeLimit = false
protected

◆ bRoundBased

bool AMultiplayerGameMode::bRoundBased = false
protected

◆ bRoundLimit

bool AMultiplayerGameMode::bRoundLimit = false
protected

◆ bRoundsTimed

bool AMultiplayerGameMode::bRoundsTimed = false
protected

◆ bSelfKillPenalty

bool AMultiplayerGameMode::bSelfKillPenalty = true
protected

◆ bShowAIDeathInFeed

bool AMultiplayerGameMode::bShowAIDeathInFeed = true
protected

◆ bShowDeathsInFeed

bool AMultiplayerGameMode::bShowDeathsInFeed = true
protected

◆ bShowPlayerDeathsInFeed

bool AMultiplayerGameMode::bShowPlayerDeathsInFeed = true
protected

◆ bTeamKillPenalty

bool AMultiplayerGameMode::bTeamKillPenalty = true
protected

◆ GoalScore

int32 AMultiplayerGameMode::GoalScore = 1
protected

◆ MaxRounds

int32 AMultiplayerGameMode::MaxRounds = 10
protected

◆ MultiplayerGameState

class AMultiplayerGameState* AMultiplayerGameMode::MultiplayerGameState = nullptr
protected

Replaced with Parent = UpdateGameState();.

Remove Game State, use Interface //

◆ NextRoundTimerHandle

FTimerHandle AMultiplayerGameMode::NextRoundTimerHandle
private

◆ ObjectiveScore

int32 AMultiplayerGameMode::ObjectiveScore = 5
protected

◆ PlayerKilledScore

int32 AMultiplayerGameMode::PlayerKilledScore = 2
protected

◆ PlayerKilledXP

float AMultiplayerGameMode::PlayerKilledXP = 100.0f
protected

◆ PlayerLifePool

int32 AMultiplayerGameMode::PlayerLifePool = 10
protected

◆ Round

int32 AMultiplayerGameMode::Round = 0
protected

◆ RoundGoalScore

int32 AMultiplayerGameMode::RoundGoalScore = 1
protected

◆ RoundMatchState

FMatchState AMultiplayerGameMode::RoundMatchState
private

◆ RoundTime

int32 AMultiplayerGameMode::RoundTime = 20
protected

◆ RoundTimeMax

int32 AMultiplayerGameMode::RoundTimeMax = 10
protected

◆ RoundTimerHandle

FTimerHandle AMultiplayerGameMode::RoundTimerHandle
private

◆ SelfKilledXP

float AMultiplayerGameMode::SelfKilledXP = -25.0f
protected

◆ SelfKillPenaltyTime

int32 AMultiplayerGameMode::SelfKillPenaltyTime = 3
protected

◆ TeamKilledXP

float AMultiplayerGameMode::TeamKilledXP = -100.0f
protected

◆ TeamKillPenaltyTime

int32 AMultiplayerGameMode::TeamKillPenaltyTime = 3
protected

◆ TeamKillScore

int32 AMultiplayerGameMode::TeamKillScore =-1
protected

◆ TeamStarts

TMap<int32, TArray<APlayerStart*> > AMultiplayerGameMode::TeamStarts

◆ TimeTillNextRound

float AMultiplayerGameMode::TimeTillNextRound = 4.0f
protected

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