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

#include <OnlineGameMode.h>

Inheritance diagram for AOnlineGameMode:
IOnlineGM ACampaignGameMode AMultiplayerGameMode AQuestExampleGameMode AMultiplayerHordeGameMode

Public Member Functions

 AOnlineGameMode ()
 
void UpdateScore ()
 
virtual void UpdatePlayerList ()
 
virtual void SpawnPlayer (APlayerController *PlayerController)
 

Public Attributes

float UpdatePlayerListDelay = 0.3f
 

Protected Member Functions

virtual void BeginPlay () override
 
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
 
virtual void SpawnedPlayerDeath (FPlayerDeath &PlayerDeath, APawn *PawnThatDied)
 
virtual void SpawnedAIDeath (FPlayerDeath &PlayerDeath, APawn *PawnThatDied)
 
void OnPlayerDeath (const FPlayerDeath &PlayerDeath)
 
void OnAIDeath (const FPlayerDeath &PlayerDeath)
 
TArray< FPlayerDeath > & GetAllPlayerDeaths ()
 
TArray< FPlayerDeath > & GetAllAIDeaths ()
 
virtual void PreMatch ()
 
virtual void ReadyMatch ()
 
virtual void StartMatch () override
 
virtual void EndMatch () override
 
virtual void MatchCountdown ()
 
virtual bool ReadyToStartMatch_Implementation () override
 
void OnPreMatch ()
 
void OnReadyMatch ()
 
void OnStartMatch ()
 
void OnEndMatch ()
 
void OnMatchCountdown ()
 
virtual void SetEndMatchCondition ()
 
virtual bool GetIsMatchOver ()
 
virtual void UpdateGameState ()
 
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

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

AActor * FindBestPlayerStart (TArray< AActor * > Starts) const
 
void GetAllPlayerStarts ()
 
void ResetTeamScores ()
 

Private Attributes

FMatchState MultiplayerMatchState
 
FTimerHandle PreMatchTimerHandle
 
FTimerHandle ReadyMatchTimerHandle
 
FTimerHandle MatchTimerHandle
 
FTimerHandle UpdatePlayerListTimerHandle
 
bool bEndMatchCondition = false
 

Constructor & Destructor Documentation

◆ AOnlineGameMode()

AOnlineGameMode::AOnlineGameMode ( )
21{
22
23}

Member Function Documentation

◆ AddPlayerToTeam()

void AOnlineGameMode::AddPlayerToTeam ( APlayerController * PlayerController)
protectedvirtual

Old Way used for only 2 Teams

413{
414 if(PlayerController == nullptr){return;}
415 for (int32 TeamID = 1; TeamID <= NumberOfTeams; ++TeamID)
416 {
417 TeamPlayerControllers.FindOrAdd(TeamID);
418 }
419 // Find the team with the least number of players
420 int32 TeamWithLeastPlayers = 1;
421 int32 LeastNumberOfPlayers = MAX_int32;
422 for (const auto& Team : TeamPlayerControllers)
423 {
424 if (Team.Value.Num() < LeastNumberOfPlayers)
425 {
426 LeastNumberOfPlayers = Team.Value.Num();
427 TeamWithLeastPlayers = Team.Key;
428 }
429 }
430 // Add the player to the team with the least number of players
431 TeamPlayerControllers[TeamWithLeastPlayers].Add(PlayerController);
432 // Set the team ID in the generic team agent interface
433 IGenericTeamAgentInterface* TeamAgentInterface = Cast<IGenericTeamAgentInterface>(PlayerController->PlayerState);
434 if (TeamAgentInterface != nullptr)
435 {
436 TeamAgentInterface->SetGenericTeamId(FGenericTeamId(TeamWithLeastPlayers));
437 }
438 // Add the team ID to the list of team IDs (if not already present)
439 TeamIDs.AddUnique(TeamWithLeastPlayers);
440
442 // if(TeamAPlayerController.Num() == 0 || TeamAPlayerController.Num() < TeamBPlayerController.Num())
443 // {
444 // TeamAPlayerController.Add(PlayerController);
445 // IGenericTeamAgentInterface* TeamAgentInterface = Cast<IGenericTeamAgentInterface>(PlayerController->PlayerState);
446 // if(TeamAgentInterface != nullptr)
447 // {
448 // TeamAgentInterface->SetGenericTeamId(10);
449 // }
450 // TeamIDs.AddUnique(10);
451 // }
452 // else
453 // {
454 // TeamBPlayerController.Add(PlayerController);
455 // IGenericTeamAgentInterface* TeamAgentInterface = Cast<IGenericTeamAgentInterface>(PlayerController->PlayerState);
456 // if(TeamAgentInterface != nullptr)
457 // {
458 // TeamAgentInterface->SetGenericTeamId(20);
459 // }
460 // TeamIDs.AddUnique(20);
461 // }
462}
int32 NumberOfTeams
Definition OnlineGameMode.h:97
TMap< int32, TArray< APlayerController * > > TeamPlayerControllers
Definition OnlineGameMode.h:58
TArray< int32 > TeamIDs
Definition OnlineGameMode.h:101

◆ BeginPlay()

void AOnlineGameMode::BeginPlay ( )
overrideprotectedvirtual

Reimplemented in ACampaignGameMode, AMultiplayerGameMode, AMultiplayerHordeGameMode, and AQuestExampleGameMode.

45{
46 Super::BeginPlay();
49 {
52 }
55 GetWorld()->GetTimerManager().SetTimer(PreMatchTimerHandle, this, &AOnlineGameMode::PreMatch, MatchUpdateFrequency, true, 0.0f);
56}
void GetAllPlayerStarts()
Definition OnlineGameMode.cpp:583
FMatchState MultiplayerMatchState
Definition OnlineGameMode.h:230
virtual void PreMatch()
Definition OnlineGameMode.cpp:58
int32 ReadyMatchWaitTime
Definition OnlineGameMode.h:142
bool bDisableStartTimers
Definition OnlineGameMode.h:136
int32 PreMatchWaitTime
Definition OnlineGameMode.h:138
float MatchUpdateFrequency
Definition OnlineGameMode.h:140
virtual void UpdateGameState()
Definition OnlineGameMode.cpp:503
FTimerHandle PreMatchTimerHandle
Definition OnlineGameMode.h:239
EMatchState MatchState
Definition BaseData.h:1081

◆ DestroyPawn()

void AOnlineGameMode::DestroyPawn ( APawn * Pawn) const
protected
302{
303 TArray<AActor*> PawnAttachedActors;
304 Pawn->GetAttachedActors(PawnAttachedActors, true);
305 for(AActor* AttachedActor : PawnAttachedActors)
306 {
307 AttachedActor->Destroy(true);
308 }
309 Pawn->Destroy(true);
310}

◆ EndMatch()

void AOnlineGameMode::EndMatch ( )
overrideprotectedvirtual

Condition Met to finish match

Reimplemented in AMultiplayerGameMode.

153{
154 bMatchOver = true;
155 GetWorld()->GetTimerManager().ClearTimer(MatchTimerHandle);
158 if(bDebuggingMode && bLogMatchState){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::EndMatch Match OVER"));}
160 if(OnlineGameState != nullptr)
161 {
163 }
164 OnEndMatch();
165 Super::EndMatch();
166}
bool bDebuggingMode
Definition OnlineGameMode.h:212
FTimerHandle MatchTimerHandle
Definition OnlineGameMode.h:241
bool bMatchOver
Definition OnlineGameMode.h:130
class IOnlineGS * OnlineGameState
Definition OnlineGameMode.h:221
bool bLogMatchState
Definition OnlineGameMode.h:218
virtual void MatchOver()=0
int32 TimeRemaining
Definition BaseData.h:1085

◆ FindBestPlayerStart()

AActor * AOnlineGameMode::FindBestPlayerStart ( TArray< AActor * > Starts) const
private
471{
472 if(Starts.IsEmpty()){return nullptr;}
473 const APawn* PawnToFit = DefaultPawnClass ? DefaultPawnClass->GetDefaultObject<APawn>() : nullptr;
474 TArray<AActor*> UnOccupiedStartPoints;
475 TArray<AActor*> OccupiedStartPoints;
476
477 if(bDebuggingMode && bLogPlayerStarts){UE_LOG(LogOnlineGameMode, Warning, TEXT("Random Player Start"));}
478 //- Go through all player starts, and try see if Pawn will fit //
479 for(const auto& PlayerStart : Starts)
480 {
481 FVector ActorLocation = PlayerStart->GetActorLocation();
482 const FRotator ActorRotation = PlayerStart->GetActorRotation();
483 if(!GetWorld()->EncroachingBlockingGeometry(PawnToFit, ActorLocation, ActorRotation))
484 {
485 UnOccupiedStartPoints.Add(PlayerStart);
486 }
487 else if (GetWorld()->FindTeleportSpot(PawnToFit, ActorLocation, ActorRotation))
488 {
489 OccupiedStartPoints.Add(PlayerStart);
490 }
491 }
492 if(UnOccupiedStartPoints.Num() > 0)
493 {
494 return UnOccupiedStartPoints[FMath::RandRange(0, UnOccupiedStartPoints.Num() - 1)];
495 }
496 if(OccupiedStartPoints.Num() > 0)
497 {
498 return OccupiedStartPoints[FMath::RandRange(0, OccupiedStartPoints.Num() - 1)];
499 }
500 return Starts[FMath::RandRange(0, Starts.Num() - 1)];
501}
bool bLogPlayerStarts
Definition OnlineGameMode.h:214

◆ FindRandomAIPlayerStart()

FTransform AOnlineGameMode::FindRandomAIPlayerStart ( ) const
protected
540{
541 if(PlayerStarts.Num() == 0 || AIPlayerStarts.Num() == 0)
542 {
543 if(bDebuggingMode && bLogPlayerStarts){UE_LOG(LogOnlineGameMode, Error, TEXT("No Player Starts & No AI Player Starts in AI Player Starts"));}
544 return FindRandomPlayerStart();
545 }
546 const AActor* BestStart = FindBestPlayerStart(AIPlayerStarts);
547 if(BestStart == nullptr)
548 {
549 if(bDebuggingMode && bLogPlayerStarts){UE_LOG(LogOnlineGameMode, Error, TEXT("No AIPlayerStarts Player Starts Found"));}
550 return FTransform(FQuat(FRotator::ZeroRotator), FVector::ZeroVector, FVector(1,1,1));
551 }
552 return BestStart->GetActorTransform();
553}
AActor * FindBestPlayerStart(TArray< AActor * > Starts) const
Definition OnlineGameMode.cpp:470
TArray< AActor * > AIPlayerStarts
Definition OnlineGameMode.h:191
TArray< AActor * > PlayerStarts
Definition OnlineGameMode.h:188
FTransform FindRandomPlayerStart() const
Definition OnlineGameMode.cpp:523

◆ FindRandomPlayerStart()

FTransform AOnlineGameMode::FindRandomPlayerStart ( ) const
protected
524{
525 if(PlayerStarts.Num() == 0)
526 {
527 if(bDebuggingMode && bLogPlayerStarts){UE_LOG(LogOnlineGameMode, Error, TEXT("No Player Starts Found"));}
528 return FTransform(FQuat(FRotator::ZeroRotator), FVector::ZeroVector, FVector(1,1,1));
529 }
530 const AActor* BestStart = FindBestPlayerStart(PlayerStarts);
531 if(BestStart == nullptr)
532 {
533 if(bDebuggingMode && bLogPlayerStarts){UE_LOG(LogOnlineGameMode, Error, TEXT("No Player Starts Found"));}
534 return FTransform(FQuat(FRotator::ZeroRotator), FVector::ZeroVector, FVector(1,1,1));
535 }
536 return BestStart->GetActorTransform();
537}

◆ FindTeamPlayerStart()

FTransform AOnlineGameMode::FindTeamPlayerStart ( const int32 TeamID)
protected
556{
557 if(!TeamStarts.Contains(TeamID) || TeamStarts[TeamID].Num() == 0)
558 {
559 if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Warning, TEXT("No player starts for this team"));}
560 //- Handle error - no player start for this team.
561 return FindRandomPlayerStart();
562 }
563 //- If the team hasn't spawned anyone yet, initialize the last used index
564 if(!LastUsedPlayerStart.Contains(TeamID))
565 {
566 LastUsedPlayerStart.Add(TeamID, -1);
567 }
568
569 //- Get the last used index for this team
570 int32& LastUsedIndex = LastUsedPlayerStart[TeamID];
571
572 //- Cycle to the next player start
573 LastUsedIndex = (LastUsedIndex + 1) % TeamStarts[TeamID].Num();
574 if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Warning, TEXT("TEAM PLAYER START"));}
575 return TeamStarts[TeamID][LastUsedIndex]->GetTransform();
576}
TMap< int32, TArray< APlayerStart * > > TeamStarts
Definition OnlineGameMode.h:200
TMap< int32, int32 > LastUsedPlayerStart
Definition OnlineGameMode.h:194

◆ GenericPlayerInitialization()

void AOnlineGameMode::GenericPlayerInitialization ( AController * Controller)
overrideprotectedvirtual
170{
171 Super::GenericPlayerInitialization(Controller);
172 APlayerController* NewPlayer = Cast<APlayerController>(Controller);
173 if(NewPlayer == nullptr){return;}
174 AllPlayerControllers.AddUnique(NewPlayer);
175 AddPlayerToTeam(NewPlayer);
176 RegisterPlayer(NewPlayer);
177 GetWorld()->GetTimerManager().SetTimer(UpdatePlayerListTimerHandle, this, &AOnlineGameMode::UpdatePlayerList, UpdatePlayerListDelay);
178}
virtual void RegisterPlayer(APlayerController *NewPlayer)
Definition OnlineGameMode.cpp:200
TArray< APlayerController * > AllPlayerControllers
Definition OnlineGameMode.h:57
FTimerHandle UpdatePlayerListTimerHandle
Definition OnlineGameMode.h:243
virtual void UpdatePlayerList()
Definition OnlineGameMode.cpp:37
virtual void AddPlayerToTeam(APlayerController *PlayerController)
Definition OnlineGameMode.cpp:412
float UpdatePlayerListDelay
Definition OnlineGameMode.h:33

◆ GetAllAIDeaths()

TArray< FPlayerDeath > & AOnlineGameMode::GetAllAIDeaths ( )
inlineprotected
90{return AllAIDeaths;};
TArray< FPlayerDeath > AllAIDeaths
Definition OnlineGameMode.h:93

◆ GetAllPlayerDeaths()

TArray< FPlayerDeath > & AOnlineGameMode::GetAllPlayerDeaths ( )
inlineprotected
88{return AllPlayerDeaths;};
TArray< FPlayerDeath > AllPlayerDeaths
Definition OnlineGameMode.h:92

◆ GetAllPlayerStarts()

void AOnlineGameMode::GetAllPlayerStarts ( )
private
584{
585 UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerStart::StaticClass(), PlayerStarts);
586 for(AActor* PlayerStartActor: PlayerStarts)
587 {
588 APlayerStart* PlayerStart = Cast<APlayerStart>(PlayerStartActor);
589 if(PlayerStart != nullptr)
590 {
591 if (PlayerStart->PlayerStartTag.ToString().Equals(AISpawnTag))
592 {
593 AIPlayerStarts.Add(PlayerStart);
594 continue;
595 }
596 int32 ExtractedTeamID = FCString::Atoi(*PlayerStart->PlayerStartTag.ToString());
597 if(!TeamStarts.Contains(ExtractedTeamID))
598 {
599 TeamStarts.Add(ExtractedTeamID, TArray<APlayerStart*>());
600 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::GetAllPlayerStarts TeamStarts Doesn't contain TEAM ID"));}
601 }
602 TeamStarts[ExtractedTeamID].Add(PlayerStart);
603 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::GetAllPlayerStarts Team: %i has: %i Starts"), ExtractedTeamID, TeamStarts[ExtractedTeamID].Num());}
604 }
605 }
606 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::GetAllPlayerStarts AI Player Starts: %i"), AIPlayerStarts.Num());}
607}
FString AISpawnTag
Definition OnlineGameMode.h:106

◆ GetIsMatchOver()

virtual bool AOnlineGameMode::GetIsMatchOver ( )
inlineprotectedvirtual
176{return bEndMatchCondition;};
bool bEndMatchCondition
Definition OnlineGameMode.h:245

◆ GetMultiplayerMatchState()

FMatchState AOnlineGameMode::GetMultiplayerMatchState ( ) const
overrideprotectedvirtual

Implements IOnlineGM.

465{
467}

◆ GetTotalNumberOfControllers()

int32 AOnlineGameMode::GetTotalNumberOfControllers ( ) const
protected
394{
395 int32 NumberOfPCInTeams = 0;
396 for(auto& Element : TeamPlayerControllers)
397 {
398 Element.Key;
399 NumberOfPCInTeams++;
400 }
401 if(AllPlayerControllers.Num() == NumberOfPCInTeams)
402 {
403 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Error,TEXT("Total Players doesn't add up: %i, Teams: %i"), AllPlayerControllers.Num(), NumberOfPCInTeams);}
404 }
405 // if(AllPlayerControllers.Num() == TeamAPlayerController.Num() + TeamBPlayerController.Num())
406 // {
407 // UE_LOG(LogOnlineGameMode,Error,TEXT("Total Players doesn't add up: %i, TeamA: %i TeamB %i"), AllPlayerControllers.Num(), TeamAPlayerController.Num(), TeamBPlayerController.Num());
408 // }
409 return AllPlayerControllers.Num();
410}

◆ LogDebugError()

void AOnlineGameMode::LogDebugError ( const FString & Message) const
protected
632{
633 TRACE_CPUPROFILER_EVENT_SCOPE(AOnlineGameMode::LogDebugError);
634 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_GameMode);
635 LogDebugMessage(Message, true, true);
636}
void LogDebugMessage(const FString &Message, const bool bWarning=false, const bool bError=false) const
Definition OnlineGameMode.cpp:645
void LogDebugError(const FString &Message) const
Definition OnlineGameMode.cpp:631

◆ LogDebugMessage()

void AOnlineGameMode::LogDebugMessage ( const FString & Message,
const bool bWarning = false,
const bool bError = false ) const
protected
646{
647 TRACE_CPUPROFILER_EVENT_SCOPE(UPlayerControllerComponent::LogDebugMessage);
648 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_GameMode);
649 if(bDebuggingMode == false && bError == false){return;}
650 FOutputDevice* OutputDevice = GWarn;
651 if(OutputDevice == nullptr){return;}
652 FString NetModeString;
653 switch(GetWorld()->GetNetMode())
654 {
655 case NM_Standalone:
656 NetModeString = FString("SDL");
657 break;
658 case NM_DedicatedServer:
659 NetModeString = FString("DServer");
660 break;
661 case NM_ListenServer:
662 NetModeString = FString("LServer");
663 break;
664 case NM_Client:
665 NetModeString = FString("Client");
666 break;
667 default:
668 NetModeString = FString("Unknown");
669 break;
670 }
671 const FString FullMessage = FString::Printf(TEXT("%s: %s::%s"), *NetModeString, *GetName(), *Message);
672 if(bError)
673 {
674 OutputDevice->Log(LogOnlineGameMode.GetCategoryName(), ELogVerbosity::Error, FullMessage);
675 }
676 else if(bWarning)
677 {
678 OutputDevice->Log(LogOnlineGameMode.GetCategoryName(), ELogVerbosity::Warning, FullMessage);
679 }
680 else
681 {
682 OutputDevice->Log(LogOnlineGameMode.GetCategoryName(), ELogVerbosity::Log, FullMessage);
683 }
684}

◆ LogDebugWarning()

void AOnlineGameMode::LogDebugWarning ( const FString & Message) const
protected
639{
640 TRACE_CPUPROFILER_EVENT_SCOPE(AOnlineGameMode::LogDebugWarning);
641 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_GameMode);
642 LogDebugMessage(Message, true);
643}
void LogDebugWarning(const FString &Message) const
Definition OnlineGameMode.cpp:638

◆ LogMissingPointer()

void AOnlineGameMode::LogMissingPointer ( const FString & PointerName) const
protected
625{
626 TRACE_CPUPROFILER_EVENT_SCOPE(AOnlineGameMode::LogMissingPointer);
627 SCOPE_CYCLE_COUNTER(STATGROUP_BaseHelpers_GameMode);
628 if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Error, TEXT(" %s not set in %s of %s"), ToCStr(PointerName), ToCStr(GetName()), ToCStr(GetOwner()->GetName()));}
629}
void LogMissingPointer(const FString &PointerName) const
Definition OnlineGameMode.cpp:624

◆ Logout()

void AOnlineGameMode::Logout ( AController * Exiting)
overrideprotectedvirtual
247{
248 Super::Logout(Exiting);
249 if(Exiting == nullptr){return;}
250 APlayerController* PlayerController = Cast<APlayerController>(Exiting);
251 if(PlayerController != nullptr && AllPlayerControllers.Contains(Exiting))
252 {
253 AllPlayerControllers.Remove(PlayerController);
254 }
255 //@TODO Remove Player Controller from TeamPlayerControllers.
256 //@TODO Add function that can get the TeamID from PlayerController?
257 // if(PlayerController != nullptr && TeamPlayerControllers.Contains(Exiting))
258 // {
259 //
260 // }
261
262 //@TODO- Send Message, x player left match
263 GetWorld()->GetTimerManager().SetTimer(UpdatePlayerListTimerHandle, this, &AOnlineGameMode::UpdatePlayerList, UpdatePlayerListDelay);
264}

◆ MatchCountdown()

void AOnlineGameMode::MatchCountdown ( )
protectedvirtual

Loop while in Match

Reimplemented in AMultiplayerGameMode, and AMultiplayerHordeGameMode.

127{
128 if(bMatchTimed)
129 {
130 if(bMatchCountUp)
131 {
132 MatchTime++;
133 }
134 else
135 {
136 MatchTime--;
137 }
138 if(bDebuggingMode && bLogMatchTime){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::MatchCountdown Match Time: %i "), MatchTime);}
139 }
145 {
146 GetWorld()->GetTimerManager().ClearTimer(MatchTimerHandle);
147 EndMatch();
148 }
149}
int32 MatchTimeLimit
Definition OnlineGameMode.h:125
bool bMatchCountUp
Definition OnlineGameMode.h:119
bool bMatchTimeLimit
Definition OnlineGameMode.h:121
bool bMatchTimed
Definition OnlineGameMode.h:117
bool bLogMatchTime
Definition OnlineGameMode.h:216
int32 MatchTime
Definition OnlineGameMode.h:123
virtual void EndMatch() override
Definition OnlineGameMode.cpp:152
void OnMatchCountdown()

◆ OnAIDeath()

void AOnlineGameMode::OnAIDeath ( const FPlayerDeath & PlayerDeath)
protected

◆ OnEndMatch()

void AOnlineGameMode::OnEndMatch ( )
protected

◆ OnMatchCountdown()

void AOnlineGameMode::OnMatchCountdown ( )
protected

◆ OnPlayerDeath()

void AOnlineGameMode::OnPlayerDeath ( const FPlayerDeath & PlayerDeath)
protected

◆ OnPreMatch()

void AOnlineGameMode::OnPreMatch ( )
protected

◆ OnReadyMatch()

void AOnlineGameMode::OnReadyMatch ( )
protected

◆ OnStartMatch()

void AOnlineGameMode::OnStartMatch ( )
protected

◆ PostLogin()

void AOnlineGameMode::PostLogin ( APlayerController * NewPlayer)
overrideprotectedvirtual
181{
182 Super::PostLogin(NewPlayer);
183}

◆ PreMatch()

void AOnlineGameMode::PreMatch ( )
protectedvirtual

Waiting for everyone to load in

Reimplemented in AMultiplayerGameMode.

59{
63 if(bDebuggingMode && bLogMatchTime){LogDebugError(FString::Printf(TEXT("AOnlineGameMode::PreMatch Pre Match Wait: %i "), PreMatchWaitTime));}
64 OnPreMatch();
66 {
67 GetWorld()->GetTimerManager().ClearTimer(PreMatchTimerHandle);
68 GetWorld()->GetTimerManager().SetTimer(ReadyMatchTimerHandle, this, &AOnlineGameMode::ReadyMatch, MatchUpdateFrequency, true, 0.0f);
69 }
70}
int32 NumberOfPlayersToStart
Definition OnlineGameMode.h:197
virtual void ReadyMatch()
Definition OnlineGameMode.cpp:78
FTimerHandle ReadyMatchTimerHandle
Definition OnlineGameMode.h:240
int32 GetTotalNumberOfControllers() const
Definition OnlineGameMode.cpp:393

◆ ReadyMatch()

void AOnlineGameMode::ReadyMatch ( )
protectedvirtual

Everyone Ready to Start

Reimplemented in AMultiplayerGameMode.

79{
84 if(bDebuggingMode && bLogMatchTime){UE_LOG(LogOnlineGameMode,Warning,TEXT("Ready Match Wait: %i "), ReadyMatchWaitTime);}
88 //@ TODO Move spawning Players into Ready Match? then Perform all Component Setups
89 // for(APlayerController* PlayerController : AllPlayerControllers)
90 // {
91 // SpawnPlayer(PlayerController);
92 // }
94 if(ReadyMatchWaitTime <= 0)
95 {
96 GetWorld()->GetTimerManager().ClearTimer(ReadyMatchTimerHandle);
97 StartMatch();
98 }
99}
virtual void StartMatch() override
Definition OnlineGameMode.cpp:101
void UpdateScore()
Definition OnlineGameMode.cpp:25
void ResetTeamScores()
Definition OnlineGameMode.cpp:609

◆ ReadyToStartMatch_Implementation()

bool AOnlineGameMode::ReadyToStartMatch_Implementation ( )
overrideprotectedvirtual
74{
75 return false;
76}

◆ RegisterPlayer()

void AOnlineGameMode::RegisterPlayer ( APlayerController * NewPlayer)
protectedvirtual
201{
202 if(NewPlayer == nullptr){return;}
203 FUniqueNetIdRepl UniqueNetIdRepl;
204 if(NewPlayer->IsLocalController())
205 {
206 const ULocalPlayer* LocalPlayer = NewPlayer->GetLocalPlayer();
207 if(LocalPlayer != nullptr)
208 {
209 UniqueNetIdRepl = LocalPlayer->GetPreferredUniqueNetId();
210 }
211 else
212 {
213 const UNetConnection* RemoteNetConnection = Cast<UNetConnection>(NewPlayer->Player);
214 check(IsValid(RemoteNetConnection));
215 UniqueNetIdRepl = RemoteNetConnection->PlayerId;
216 }
217 }
218 else
219 {
220 const UNetConnection* RemoteNetConnection = Cast<UNetConnection>(NewPlayer->Player);
221 check(IsValid(RemoteNetConnection));
222 UniqueNetIdRepl = RemoteNetConnection->PlayerId;
223 }
224
225 const TSharedPtr<const FUniqueNetId> UniqueNetId = UniqueNetIdRepl.GetUniqueNetId();
226 //- extra added error check from pre login //
227 if(UniqueNetId == nullptr){Logout(NewPlayer);return;}
228 check(UniqueNetId != nullptr)
229 const IOnlineSubsystem* OnlineSubsystem = Online::GetSubsystem(NewPlayer->GetWorld());
230 if(OnlineSubsystem == nullptr){if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::RegisterPlayer Online Subsystem failed in Register Player"));}return;}
231 const IOnlineSessionPtr Session = OnlineSubsystem->GetSessionInterface();
232 if(Session == nullptr){if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::RegisterPlayer IOnlineSessionPtr failed in Register Player"));}return;}
233 const IOnlineGI* GameInstance = Cast<IOnlineGI>(GetGameInstance());
234 if(GameInstance == nullptr){if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::RegisterPlayer failed in Register Player"));}return;}
235 const bool bRegistrationSuccess = Session->RegisterPlayer(FName(GameInstance->GetCurrentSessionName()),*UniqueNetId, false);
236 if(bRegistrationSuccess)
237 {
238 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::RegisterPlayer Player Registered!"));}
239 return;
240 }
241 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Error,TEXT("AOnlineGameMode::RegisterPlayer Registeration Failed!"));}
242}
virtual void Logout(AController *Exiting) override
Definition OnlineGameMode.cpp:246
Definition OnlineGI.h:20
virtual FString GetCurrentSessionName() const =0

◆ ResetTeamScores()

void AOnlineGameMode::ResetTeamScores ( )
private
610{
611 for(int32 TeamID : TeamIDs)
612 {
613 //- Set the team score to 0 //
614 const int32* PreviousScorePtr = TeamScores.Find(TeamID);
615 int32 PreviousScore = 0;
616 if(PreviousScorePtr != nullptr)
617 {
618 PreviousScore = *PreviousScorePtr;
619 }
620 TeamScores.Add(TeamID, PreviousScore);
621 }
622}
TMap< int32, int32 > TeamScores
Definition OnlineGameMode.h:99

◆ SetEndMatchCondition()

virtual void AOnlineGameMode::SetEndMatchCondition ( )
inlineprotectedvirtual

Set the game to end

174{bEndMatchCondition = true;};

◆ SpawnedAIDeath()

void AOnlineGameMode::SpawnedAIDeath ( FPlayerDeath & PlayerDeath,
APawn * PawnThatDied )
protectedvirtual

Reimplemented in ACampaignGameMode, AMultiplayerGameMode, and AMultiplayerHordeGameMode.

360{
361 const IOnlinePlayerState* AttackerPlayerState = Cast<IOnlinePlayerState>(PlayerDeath.AttackerPlayerState);
362 if(AttackerPlayerState != nullptr)
363 {
364 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("Attacker Name: %s"), *AttackerPlayerState->GetPlayerName());}
365 PlayerDeath.Attacker = AttackerPlayerState->GetPlayerName();
366 }
367 if(PlayerDeath.bSelfDeath)
368 {
369 //- Self Death //
370 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("Self Death AI"));}
371 }
372 AllAIDeaths.Add(PlayerDeath);
373 AllDeaths.Add(PlayerDeath);
374
375 TeamIDs.AddUnique(PlayerDeath.AttackerTeamID);
376 TeamIDs.AddUnique(PlayerDeath.VictimTeamID);
377 const int32* PreviousAttackerScorePtr = TeamScores.Find(PlayerDeath.AttackerTeamID);
378 // int32 PointsToAdd = PlayerKilledScore;
379 // if(!PlayerDeath.bTeamKill)
380 // {
381 // AddScoreToTeam(PlayerDeath.AttackerTeamID, AIKilledScore);
382 // }
383 // if(bShowAIDeathInFeed)
384 // {
385 // AddDeathToKillFeed(PlayerDeath);
386 // }
387 UpdateScore();
388 // OnAIDeath(PlayerDeath);
389 // AddScoreToPlayer(PlayerDeath.AttackerPlayerState, PlayerDeath.bTeamKill, PlayerDeath.bSelfDeath);
390 OnAIDeath(PlayerDeath);
391}
void OnAIDeath(const FPlayerDeath &PlayerDeath)
TArray< FPlayerDeath > AllDeaths
Definition OnlineGameMode.h:94
Definition OnlinePlayerState.h:18
virtual FString GetPlayerName() const =0
FString Attacker
Definition BaseData.h:617
bool bSelfDeath
Definition BaseData.h:646
int32 AttackerTeamID
Definition BaseData.h:631
class APlayerState * AttackerPlayerState
Definition BaseData.h:626
int32 VictimTeamID
Definition BaseData.h:633

◆ SpawnedPlayerDeath()

void AOnlineGameMode::SpawnedPlayerDeath ( FPlayerDeath & PlayerDeath,
APawn * PawnThatDied )
protectedvirtual

Reimplemented in ACampaignGameMode, AMultiplayerGameMode, and AMultiplayerHordeGameMode.

313{
314 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::PlayerDeath Victim: %s Attacker: %s"), *PlayerDeath.Victim, *PlayerDeath.Attacker);}
315 const IOnlinePlayerState* VictimPlayerState = Cast<IOnlinePlayerState>(PlayerDeath.VictimPlayerState);
316 if(VictimPlayerState != nullptr)
317 {
318 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::PlayerDeath Victim Name: %s"), *VictimPlayerState->GetPlayerName());}
319 PlayerDeath.Victim = VictimPlayerState->GetPlayerName();
320 }
321 const IOnlinePlayerState* AttackerPlayerState = Cast<IOnlinePlayerState>(PlayerDeath.AttackerPlayerState);
322 if(AttackerPlayerState != nullptr)
323 {
324 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::PlayerDeath Attacker Name: %s"), *AttackerPlayerState->GetPlayerName());}
325 PlayerDeath.Attacker = AttackerPlayerState->GetPlayerName();
326 }
327 if(PlayerDeath.bSelfDeath)
328 {
329 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::PlayerDeath Self Death"));}
330 }
331 if(PlayerDeath.bTeamKill)
332 {
333 if(bDebuggingMode){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::PlayerDeath Team Kill"));}
334 }
335 AllPlayerDeaths.Add(PlayerDeath);
336 AllDeaths.Add(PlayerDeath);
337 //- Make sure both teams are in the array of teamIDs
338 TeamIDs.AddUnique(PlayerDeath.AttackerTeamID);
339 TeamIDs.AddUnique(PlayerDeath.VictimTeamID);
340 // int32 PointsToAdd = PlayerKilledScore;
341 // if(PlayerDeath.bTeamKill)
342 // {
343 // if(bTeamKillPenalty)
344 // {
345 // PointsToAdd = TeamKillScore;
346 // }
347 // else
348 // {
349 // PointsToAdd = 0;
350 // }
351 // }
352 // AddScoreToTeam(PlayerDeath.AttackerTeamID, PointsToAdd);
353 // AddScoreToPlayer(PlayerDeath.AttackerPlayerState, PlayerDeath.bTeamKill, PlayerDeath.bSelfDeath);
354 // AddDeathToPlayer(PlayerDeath.VictimPlayerState, PlayerDeath.bSelfDeath);
355 OnPlayerDeath(PlayerDeath);
356 UpdateScore();
357}
void OnPlayerDeath(const FPlayerDeath &PlayerDeath)
class APlayerState * VictimPlayerState
Definition BaseData.h:628
FString Victim
Definition BaseData.h:619
bool bTeamKill
Definition BaseData.h:648

◆ SpawnPlayer()

void AOnlineGameMode::SpawnPlayer ( APlayerController * PlayerController)
virtual
267{
268 if(PlayerController == nullptr){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::SpawnPlayer Player Controller Null"));return;}
269 APawn* ControlledPawn = PlayerController->GetPawn();
270 if(ControlledPawn == nullptr){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::SpawnPlayer Pawn Null"));return;}
271 //@TODO Add to BPlib, GetPlayerTeamID()
272 int32 TeamID = 0;
273 TeamID = UBaseHelpersBPLib::GetPlayerTeamID(PlayerController);
274 if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Warning, TEXT("AOnlineGameMode::SpawnPlayer Spawn Player: %s Team ID: %i"), *PlayerController->PlayerState->GetPlayerName(), TeamID);}
275 DestroyPawn(ControlledPawn);
276
277 const FActorSpawnParameters SpawnParameters;
278 FTransform SpawnLocation = FindRandomPlayerStart();
279 if(bTeamSpawns){SpawnLocation = FindTeamPlayerStart(TeamID);}
280 APawn* NewPawn = GetWorld()->SpawnActor<APawn>(DefaultPawnClass, SpawnLocation, SpawnParameters);
281 if(NewPawn != nullptr)
282 {
283 ACharacterBase* SpawnedPlayer = Cast<ACharacterBase>(NewPawn);
284 if(SpawnedPlayer != nullptr)
285 {
286 SpawnedPlayer->OnCharacterDeath.AddUniqueDynamic(this, &AOnlineGameMode::SpawnedPlayerDeath);
287 // SpawnedPlayer->OnSetupComplete.AddUniqueDynamic(this, &AOnlineGameMode::PlayerCharacterSetup);
288 }
289 PlayerController->Possess(NewPawn);
290 return;
291 }
292 if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::SpawnPlayer Pawn Failed To Spawn"));}
293}
Definition CharacterBase.h:21
FOnCharacterDeath OnCharacterDeath
Definition CharacterBase.h:39
bool bTeamSpawns
Definition OnlineGameMode.h:128
FTransform FindTeamPlayerStart(const int32 TeamID)
Definition OnlineGameMode.cpp:555
void DestroyPawn(APawn *Pawn) const
Definition OnlineGameMode.cpp:301
virtual void SpawnedPlayerDeath(FPlayerDeath &PlayerDeath, APawn *PawnThatDied)
Definition OnlineGameMode.cpp:312
static int32 GetPlayerTeamID(AController *Controller)
Definition BaseHelpersBPLib.cpp:175

◆ StartMatch()

void AOnlineGameMode::StartMatch ( )
overrideprotectedvirtual

Start logic, Spawn in Players

Reimplemented in AMultiplayerGameMode, and AMultiplayerHordeGameMode.

102{
103 Super::StartMatch();
104 if(bDebuggingMode && bLogMatchState){UE_LOG(LogOnlineGameMode,Warning,TEXT("AOnlineGameMode::StartMatch Match Start"));}
105 // ResetTeamScores();
106 // UpdateScore();
108 for(APlayerController* PlayerController : AllPlayerControllers)
109 {
110 SpawnPlayer(PlayerController);
111 }
113 // //@ TODO Move spawning Players into Ready Match? then Perform all Component Setups
114 // for(APlayerController* PlayerController : AllPlayerControllers)
115 // {
116 // SpawnPlayer(PlayerController);
117 // }
118 if(bMatchCountUp)
119 {
120 MatchTime = 0;
121 }
122 GetWorld()->GetTimerManager().SetTimer(MatchTimerHandle, this, &AOnlineGameMode::MatchCountdown, MatchUpdateFrequency, true, 0.0f);
123 OnStartMatch();
124}
virtual void MatchCountdown()
Definition OnlineGameMode.cpp:126
virtual void SpawnPlayer(APlayerController *PlayerController)
Definition OnlineGameMode.cpp:266

◆ SwapPlayerControllers()

void AOnlineGameMode::SwapPlayerControllers ( APlayerController * OldPC,
APlayerController * NewPC )
overrideprotectedvirtual
187{
188 Super::SwapPlayerControllers(OldPC, NewPC);
189 if(NewPC == nullptr){return;}
190 //@ TODO Get Team from OldPC - Transfer it to NewPC
191 //@ otherwise it will be putting players on new teams when they go in vehicles etc.
192 AllPlayerControllers.AddUnique(NewPC);
193 AddPlayerToTeam(NewPC);
194 RegisterPlayer(NewPC);
195
196 GetWorld()->GetTimerManager().SetTimer(UpdatePlayerListTimerHandle, this, &AOnlineGameMode::UpdatePlayerList, UpdatePlayerListDelay);
197 if(bDebuggingMode){UE_LOG(LogOnlineGameMode, Warning, TEXT("AOnlineGameMode::SwapPlayerControllers Swap Player Controllers,Total PCs: %i"), AllPlayerControllers.Num());}
198}

◆ UpdateGameState()

void AOnlineGameMode::UpdateGameState ( )
protectedvirtual

Reimplemented in AMultiplayerGameMode.

504{
505 if(OnlineGameState == nullptr)
506 {
507 OnlineGameState = Cast<IOnlineGS>(GameState);
508 }
509 if(OnlineGameState == nullptr){UE_LOG(LogOnlineGameMode,Error,TEXT("Game State Missing in AOnlineGameMode"));}
510 if(OnlineGameState != nullptr)
511 {
512 UpdateScore();
515 // OnlineGameState->SetScore(MultiplayerMode);
516
517 // OnlineGameState->SetScoreGoal(GoalScore);
518 //- In Multiplayer only
519 // OnlineGameState->SetRound(Round);
520 }
521}
EMultiplayerMode MultiplayerMode
Definition OnlineGameMode.h:132
virtual void SetOnlineMatchState(const FMatchState &State)=0
virtual void SetMultiplayerMode(const EMultiplayerMode Mode)=0

◆ UpdatePlayerList()

void AOnlineGameMode::UpdatePlayerList ( )
virtual
38{
39 GetWorld()->GetTimerManager().ClearTimer(UpdatePlayerListTimerHandle);
40 if(OnlineGameState == nullptr){UE_LOG(LogOnlineGameMode, Error, TEXT("AOnlineGameMode::UpdatePlayerList Game State Cast Failed"));return;}
42}
virtual void UpdatePlayerList()=0

◆ UpdateScore()

void AOnlineGameMode::UpdateScore ( )
26{
27 TArray<FTeamScoreData> ScoresArray;
28 for(const TPair<int32, int32>& Pair : TeamScores)
29 {
30 FTeamScoreData Data;
31 Data.TeamID = Pair.Key;
32 Data.TeamScore = Pair.Value;
33 ScoresArray.Add(Data);
34 }
35}
Definition MultiplayerData.h:37
int32 TeamScore
Definition MultiplayerData.h:44
int32 TeamID
Definition MultiplayerData.h:41

Member Data Documentation

◆ AIPlayerStarts

TArray<AActor*> AOnlineGameMode::AIPlayerStarts
protected

All AI Player Starts (Player Starts with a Tag "@TODO ")

◆ AISpawnTag

FString AOnlineGameMode::AISpawnTag = "AI"
protected

◆ AllAIDeaths

TArray<FPlayerDeath> AOnlineGameMode::AllAIDeaths
protected

◆ AllDeaths

TArray<FPlayerDeath> AOnlineGameMode::AllDeaths
protected

◆ AllPlayerControllers

TArray<APlayerController*> AOnlineGameMode::AllPlayerControllers
protected

All Player Controllers

◆ AllPlayerDeaths

TArray<FPlayerDeath> AOnlineGameMode::AllPlayerDeaths
protected

◆ bDebuggingMode

bool AOnlineGameMode::bDebuggingMode = false
protected

◆ bDisableStartTimers

bool AOnlineGameMode::bDisableStartTimers = false
protected

◆ bEndMatchCondition

bool AOnlineGameMode::bEndMatchCondition = false
private

◆ bFriendlyFireOn

bool AOnlineGameMode::bFriendlyFireOn = true
protected

◆ bLogMatchState

bool AOnlineGameMode::bLogMatchState = false
protected

◆ bLogMatchTime

bool AOnlineGameMode::bLogMatchTime = false
protected

◆ bLogPlayerStarts

bool AOnlineGameMode::bLogPlayerStarts = false
protected

◆ bMatchCountUp

bool AOnlineGameMode::bMatchCountUp = false
protected

◆ bMatchOver

bool AOnlineGameMode::bMatchOver = false
protected

◆ bMatchTimed

bool AOnlineGameMode::bMatchTimed = false
protected

◆ bMatchTimeLimit

bool AOnlineGameMode::bMatchTimeLimit = false
protected

◆ bTeamSpawns

bool AOnlineGameMode::bTeamSpawns = true
protected

◆ LastUsedPlayerStart

TMap<int32, int32> AOnlineGameMode::LastUsedPlayerStart
protected

Player Start that was last used to spawn player

◆ MatchTime

int32 AOnlineGameMode::MatchTime = 20
protected

◆ MatchTimeLimit

int32 AOnlineGameMode::MatchTimeLimit = 120
protected

◆ MatchTimerHandle

FTimerHandle AOnlineGameMode::MatchTimerHandle
private

◆ MatchUpdateFrequency

float AOnlineGameMode::MatchUpdateFrequency = 1.0f
protected

◆ MultiplayerMatchState

FMatchState AOnlineGameMode::MultiplayerMatchState
private

◆ MultiplayerMode

EMultiplayerMode AOnlineGameMode::MultiplayerMode = EMultiplayerMode::Default
protected

◆ NumberOfPlayersToStart

int32 AOnlineGameMode::NumberOfPlayersToStart = 4
protected

Number of Players Required to start

◆ NumberOfTeams

int32 AOnlineGameMode::NumberOfTeams = 2
protected

◆ OnlineGameState

class IOnlineGS* AOnlineGameMode::OnlineGameState = nullptr
protected

◆ PlayerStarts

TArray<AActor*> AOnlineGameMode::PlayerStarts
protected

Player Starts All Player Starts

◆ PreMatchTimerHandle

FTimerHandle AOnlineGameMode::PreMatchTimerHandle
private

◆ PreMatchWaitTime

int32 AOnlineGameMode::PreMatchWaitTime = 5
protected

◆ ReadyMatchTimerHandle

FTimerHandle AOnlineGameMode::ReadyMatchTimerHandle
private

◆ ReadyMatchWaitTime

int32 AOnlineGameMode::ReadyMatchWaitTime = 10
protected

◆ RespawnTime

int32 AOnlineGameMode::RespawnTime = 3
protected

◆ SelfDeathRespawnTimeMultiplier

int32 AOnlineGameMode::SelfDeathRespawnTimeMultiplier = 2
protected

◆ TeamIDs

TArray<int32> AOnlineGameMode::TeamIDs
protected

◆ TeamKillDeathRespawnTimeMultiplier

int32 AOnlineGameMode::TeamKillDeathRespawnTimeMultiplier = 3
protected

◆ TeamPlayerControllers

TMap<int32, TArray<APlayerController*> > AOnlineGameMode::TeamPlayerControllers
protected

◆ TeamScores

TMap<int32, int32> AOnlineGameMode::TeamScores
protected

◆ TeamStarts

TMap<int32, TArray<APlayerStart*> > AOnlineGameMode::TeamStarts
protected

◆ UpdatePlayerListDelay

float AOnlineGameMode::UpdatePlayerListDelay = 0.3f

◆ UpdatePlayerListTimerHandle

FTimerHandle AOnlineGameMode::UpdatePlayerListTimerHandle
private

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