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

#include <MenuSystemGameMode.h>

Inheritance diagram for AMenuSystemGameMode:
IMenuGameModeInterface

Public Member Functions

 AMenuSystemGameMode ()
 
virtual void BeginPlay () override
 
virtual void PostLogin (APlayerController *NewPlayer) override
 
virtual void Logout (AController *Exiting) override
 
virtual void SwapPlayerControllers (APlayerController *OldPC, APlayerController *NewPC) override
 
virtual void SpawnPlayer (APlayerController *PlayerController) override
 
virtual EMultiplayerMode GetMultiplayerGameMode () const override
 
FTransform FindRandomPlayerStart () const
 
TArray< APlayerController * > GetAllPlayerControllers ()
 
virtual int32 GetCurrentRound () const override
 

Public Attributes

TArray< AActor * > PlayerStarts
 
TArray< APlayerController * > AllPlayerControllers
 

Constructor & Destructor Documentation

◆ AMenuSystemGameMode()

AMenuSystemGameMode::AMenuSystemGameMode ( )
13{
14 bUseSeamlessTravel = false;
15}

Member Function Documentation

◆ BeginPlay()

void AMenuSystemGameMode::BeginPlay ( )
overridevirtual
18{
19 Super::BeginPlay();
20 UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerStart::StaticClass(), PlayerStarts);
21}
TArray< AActor * > PlayerStarts
Definition MenuSystemGameMode.h:29

◆ FindRandomPlayerStart()

FTransform AMenuSystemGameMode::FindRandomPlayerStart ( ) const
115{
116 if(PlayerStarts.Num() == 0)
117 {
118 UE_LOG(LogMenuSystem, Warning, TEXT("No Player Starts Found"));
119 return FTransform(FQuat(FRotator::ZeroRotator), FVector::ZeroVector, FVector(1,1,1));
120 }
121 return PlayerStarts[UKismetMathLibrary::RandomIntegerInRange(0, PlayerStarts.Num() - 1)]->GetActorTransform();
122}

◆ GetAllPlayerControllers()

TArray< APlayerController * > AMenuSystemGameMode::GetAllPlayerControllers ( )
inline
38{return AllPlayerControllers;};
TArray< APlayerController * > AllPlayerControllers
Definition MenuSystemGameMode.h:41

◆ GetCurrentRound()

virtual int32 AMenuSystemGameMode::GetCurrentRound ( ) const
inlineoverridevirtual

Reimplemented from IMenuGameModeInterface.

45{return 0;};

◆ GetMultiplayerGameMode()

virtual EMultiplayerMode AMenuSystemGameMode::GetMultiplayerGameMode ( ) const
inlineoverridevirtual

◆ Logout()

void AMenuSystemGameMode::Logout ( AController * Exiting)
overridevirtual
75{
76 Super::Logout(Exiting);
77 APlayerController* PlayerController = Cast<APlayerController>(Exiting);
78 if(PlayerController != nullptr)
79 {
80 AllPlayerControllers.Remove(PlayerController);
81 }
82}

◆ PostLogin()

void AMenuSystemGameMode::PostLogin ( APlayerController * NewPlayer)
overridevirtual
24{
25 Super::PostLogin(NewPlayer);
26 if(NewPlayer != nullptr)
27 {
28 AllPlayerControllers.Add(NewPlayer);
29 FUniqueNetIdRepl UniqueNetIdRepl;
30 if(NewPlayer->IsLocalController())
31 {
32 const ULocalPlayer* LocalPlayer = NewPlayer->GetLocalPlayer();
33 if(LocalPlayer != nullptr)
34 {
35 UniqueNetIdRepl = LocalPlayer->GetPreferredUniqueNetId();
36 }
37 else
38 {
39 const UNetConnection* RemoteNetConnection = Cast<UNetConnection>(NewPlayer->Player);
40 check(IsValid(RemoteNetConnection));
41 UniqueNetIdRepl = RemoteNetConnection->PlayerId;
42 }
43 }
44 else
45 {
46 const UNetConnection* RemoteNetConnection = Cast<UNetConnection>(NewPlayer->Player);
47 check(IsValid(RemoteNetConnection));
48 UniqueNetIdRepl = RemoteNetConnection->PlayerId;
49 }
50 const TSharedPtr<const FUniqueNetId> UniqueNetId = UniqueNetIdRepl.GetUniqueNetId();
51 //- extra added error check from pre login //
52 if(UniqueNetId == nullptr){Logout(NewPlayer);return;}
53 check(UniqueNetId != nullptr)
54 const IOnlineSubsystem* OnlineSubsystem = Online::GetSubsystem(NewPlayer->GetWorld());
55 if(OnlineSubsystem != nullptr)
56 {
57 const IOnlineSessionPtr Session = OnlineSubsystem->GetSessionInterface();
58 if(Session != nullptr)
59 {
60 const IMenuSystem* GameInstance = Cast<IMenuSystem>(GetGameInstance());
61 if(GameInstance)
62 {
63 const bool bRegistrationSuccess = Session->RegisterPlayer(FName(GameInstance->GetCurrentSessionName()),*UniqueNetId, false);
64 if(bRegistrationSuccess)
65 {
66 UE_LOG(LogMenuSystem,Warning,TEXT("Player Registered!"));
67 }
68 }
69 }
70 }
71 }
72}
virtual void Logout(AController *Exiting) override
Definition MenuSystemGameMode.cpp:74
Definition MenuSystem.h:19
virtual FString GetCurrentSessionName() const =0

◆ SpawnPlayer()

void AMenuSystemGameMode::SpawnPlayer ( APlayerController * PlayerController)
overridevirtual

Implements IMenuGameModeInterface.

93{
94 if(PlayerController == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Player Controller Null in GameMode - Failed To Spawn"));return;}
95 APawn* ControlledPawn = PlayerController->GetPawn();
96 if(ControlledPawn == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Pawn Null in GameMode - Failed To Spawn"));return;}
97 TArray<AActor*> PawnAttachedActors;
98 ControlledPawn->GetAttachedActors(PawnAttachedActors, true);
99 for(AActor* AttachedActor : PawnAttachedActors)
100 {
101 AttachedActor->Destroy();
102 }
103 ControlledPawn->Destroy();
104 const FActorSpawnParameters SpawnParameters;
105 APawn* NewPawn = GetWorld()->SpawnActor<APawn>(DefaultPawnClass, FindRandomPlayerStart(), SpawnParameters);
106 if(NewPawn != nullptr)
107 {
108 PlayerController->Possess(NewPawn);
109 return;
110 }
111 UE_LOG(LogMenuSystem, Error, TEXT("Pawn Failed To Spawn"));
112}
FTransform FindRandomPlayerStart() const
Definition MenuSystemGameMode.cpp:114

◆ SwapPlayerControllers()

void AMenuSystemGameMode::SwapPlayerControllers ( APlayerController * OldPC,
APlayerController * NewPC )
overridevirtual
85{
86 Super::SwapPlayerControllers(OldPC, NewPC);
87 //@TODO Should Remove OldPC?
88 AllPlayerControllers.Add(NewPC);
89
90}

Member Data Documentation

◆ AllPlayerControllers

TArray<APlayerController*> AMenuSystemGameMode::AllPlayerControllers

◆ PlayerStarts

TArray<AActor*> AMenuSystemGameMode::PlayerStarts

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