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

#include <SpaceGameMode.h>

Inheritance diagram for ASpaceGameMode:

Public Member Functions

 ASpaceGameMode ()
 
virtual void BeginPlay () override
 
virtual void PostLogin (APlayerController *NewPlayer) override
 
virtual void Logout (AController *Exiting) override
 
virtual void SwapPlayerControllers (APlayerController *OldPC, APlayerController *NewPC) override
 
void SpawnPlayer (APlayerController *PlayerController)
 
FTransform FindRandomPlayerStart () const
 
virtual void PlayerDeath (FPlayerDeath PlayerDeath)
 
virtual void AIDeath (FPlayerDeath PlayerDeath)
 

Public Attributes

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

Constructor & Destructor Documentation

◆ ASpaceGameMode()

ASpaceGameMode::ASpaceGameMode ( )
15{
16
17}

Member Function Documentation

◆ AIDeath()

void ASpaceGameMode::AIDeath ( FPlayerDeath PlayerDeath)
virtual
135{
136}

◆ BeginPlay()

void ASpaceGameMode::BeginPlay ( )
overridevirtual
20{
21 Super::BeginPlay();
22 UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerStart::StaticClass(), PlayerStarts);
23
24}
TArray< AActor * > PlayerStarts
Definition SpaceGameMode.h:34

◆ FindRandomPlayerStart()

FTransform ASpaceGameMode::FindRandomPlayerStart ( ) const
121{
122 if(PlayerStarts.Num() == 0)
123 {
124 UE_LOG(LogTemp, Warning, TEXT("No Player Starts Found"));
125 return FTransform(FQuat(FRotator::ZeroRotator), FVector::ZeroVector, FVector(1,1,1));
126 }
127 return PlayerStarts[UKismetMathLibrary::RandomIntegerInRange(0, PlayerStarts.Num() - 1)]->GetActorTransform();
128}

◆ Logout()

void ASpaceGameMode::Logout ( AController * Exiting)
overridevirtual
77{
78 Super::Logout(Exiting);
79 APlayerController* PlayerController = Cast<APlayerController>(Exiting);
80 if(PlayerController != nullptr)
81 {
82 AllPlayerControllers.Remove(PlayerController);
83 }
84}
TArray< APlayerController * > AllPlayerControllers
Definition SpaceGameMode.h:32

◆ PlayerDeath()

void ASpaceGameMode::PlayerDeath ( FPlayerDeath PlayerDeath)
virtual
131{
132}

◆ PostLogin()

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

◆ SpawnPlayer()

void ASpaceGameMode::SpawnPlayer ( APlayerController * PlayerController)
95{
96 if(PlayerController != nullptr)
97 {
98 APawn* ControlledPawn = PlayerController->GetPawn();
99 if(ControlledPawn != nullptr)
100 {
101 TArray<AActor*> PawnAttachedActors;
102 ControlledPawn->GetAttachedActors(PawnAttachedActors, true);
103 for(AActor* AttachedActor : PawnAttachedActors)
104 {
105 AttachedActor->Destroy();
106 ControlledPawn->Destroy();
107 }
108 FActorSpawnParameters SpawnParameters;
109 APawn* NewPawn = GetWorld()->SpawnActor<APawn>(DefaultPawnClass, FindRandomPlayerStart(), SpawnParameters);
110 if(NewPawn != nullptr)
111 {
112 PlayerController->Possess(NewPawn);
113 return;
114 }
115 UE_LOG(LogTemp, Warning, TEXT("Pawn Failed To Spawn"));
116 }
117 }
118}
FTransform FindRandomPlayerStart() const
Definition SpaceGameMode.cpp:120

◆ SwapPlayerControllers()

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

Member Data Documentation

◆ AllPlayerControllers

TArray<APlayerController*> ASpaceGameMode::AllPlayerControllers

◆ PlayerStarts

TArray<AActor*> ASpaceGameMode::PlayerStarts

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