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

#include <MenuSystemLobbyGameMode.h>

Inheritance diagram for AMenuSystemLobbyGameMode:

Public Member Functions

 AMenuSystemLobbyGameMode ()
 
virtual void RegisterPlayer (APlayerController *NewPlayer)
 
void StartCountdown ()
 
void CancelCountdown ()
 
void DebugAddPlayerXP (APlayerController *Player, const int32 XP=100)
 
void DebugSaveProfile (APlayerController *Player)
 
void DebugLoadProfile (APlayerController *Player)
 
void DebugRefreshPlayerList ()
 

Public Attributes

TArray< class AMenuSystemPlayerController * > AllPlayerControllers
 

Protected Member Functions

virtual void BeginPlay () override
 
void SetPlayerName (const APlayerController *Player, const FString &Name) const
 
virtual void GenericPlayerInitialization (AController *Controller) override
 
virtual void PostLogin (APlayerController *NewPlayer) override
 
virtual void HandleSeamlessTravelPlayer (AController *&Controller) override
 
virtual void SwapPlayerControllers (APlayerController *OldPC, APlayerController *NewPC) override
 
virtual void Logout (AController *Exiting) override
 

Protected Attributes

int32 StartDelay = 5
 
bool bAutoStart = false
 
class AMenuSystemGameStateMenuGameState = nullptr
 

Private Member Functions

void StartGame () const
 
void NotifyPlayersCountdownStarted (const int32 Delay)
 
void NotifyPlayersCountdownCanceled ()
 

Private Attributes

uint32 NumberOfPlayers = 0
 
uint32 MinNumberOfPlayers = 2
 
FTimerHandle LoadMapTimerHandle
 

Constructor & Destructor Documentation

◆ AMenuSystemLobbyGameMode()

AMenuSystemLobbyGameMode::AMenuSystemLobbyGameMode ( )
18{
19 bUseSeamlessTravel = true;
20}

Member Function Documentation

◆ BeginPlay()

void AMenuSystemLobbyGameMode::BeginPlay ( )
overrideprotectedvirtual
23{
24 Super::BeginPlay();
25 MenuGameState = GetGameState<AMenuSystemGameState>();
26}
class AMenuSystemGameState * MenuGameState
Definition MenuSystemLobbyGameMode.h:64

◆ CancelCountdown()

void AMenuSystemLobbyGameMode::CancelCountdown ( )
167{
168 GetWorldTimerManager().ClearTimer(LoadMapTimerHandle);
170}
void NotifyPlayersCountdownCanceled()
Definition MenuSystemLobbyGameMode.cpp:251
FTimerHandle LoadMapTimerHandle
Definition MenuSystemLobbyGameMode.h:73

◆ DebugAddPlayerXP()

void AMenuSystemLobbyGameMode::DebugAddPlayerXP ( APlayerController * Player,
const int32 XP = 100 )
188{
189 if(Player == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Player NUllptr in lobby"))return;}
190 AMenuSystemPlayerState* MenuPlayerState = Player->GetPlayerState<AMenuSystemPlayerState>();
191 if(MenuPlayerState != nullptr)
192 {
193 FUserProfile UserProfile = MenuPlayerState->GetUserProfile();
194 UserProfile.AddXP(XP);
195 MenuPlayerState->SetUserProfile(UserProfile);
196
197 }
198}
Definition MenuSystemPlayerState.h:19
Definition BaseData.h:1239
FUserProfile AddXP(const int32 Value)
Definition BaseData.h:1307

◆ DebugLoadProfile()

void AMenuSystemLobbyGameMode::DebugLoadProfile ( APlayerController * Player)
208{
209 IMenuSystem* MenuInterface = Cast<IMenuSystem>(GetGameInstance());
210 if(MenuInterface == nullptr || Player == nullptr){return;}
211 IOnlinePlayerState* OnlinePlayerState = Cast<IOnlinePlayerState>(Player->PlayerState);
212 if(OnlinePlayerState != nullptr)
213 {
214 FUserProfile UserProfile;
215 const bool bSuccess = MenuInterface->LoadOfflinePlayerProfile(UserProfile);
216 if(bSuccess)
217 {
218 OnlinePlayerState->SetUserProfile(UserProfile);
219 UE_LOG(LogMenuSystem, Warning, TEXT("DEBUG - Player Profile Loaded"));
220 }
221 }
222}
Definition MenuSystem.h:19
virtual bool LoadOfflinePlayerProfile(FUserProfile &OfflineProfile)=0
Definition OnlinePlayerState.h:18
virtual void SetUserProfile(const FUserProfile &UpdatedUserProfile)=0

◆ DebugRefreshPlayerList()

void AMenuSystemLobbyGameMode::DebugRefreshPlayerList ( )
225{
226 TArray<FUserProfile> AllUserProfiles;
227 for(const auto PlayerController : AllPlayerControllers)
228 {
229 const IOnlinePlayerState* OnlinePlayerState = Cast<IOnlinePlayerState>(PlayerController->PlayerState);
230 if(OnlinePlayerState != nullptr)
231 {
232 AllUserProfiles.AddUnique(OnlinePlayerState->GetUserProfile());
233 // UE_LOG(LogMenuSystem, Warning, TEXT("Player Profile Loop, %s"), *OnlinePlayerState->GetUserProfile().DisplayName);
234 }
235 }
236 for(const auto PlayerController : AllPlayerControllers)
237 {
238 PlayerController->SetPlayers(AllUserProfiles);
239 }
240}
TArray< class AMenuSystemPlayerController * > AllPlayerControllers
Definition MenuSystemLobbyGameMode.h:22
virtual FUserProfile GetUserProfile() const =0

◆ DebugSaveProfile()

void AMenuSystemLobbyGameMode::DebugSaveProfile ( APlayerController * Player)
201{
202 IMenuSystem* MenuInterface = Cast<IMenuSystem>(GetGameInstance());
203 if(MenuInterface == nullptr){return;}
204 MenuInterface->SaveOfflinePlayerProfile();
205}
virtual bool SaveOfflinePlayerProfile()=0

◆ GenericPlayerInitialization()

void AMenuSystemLobbyGameMode::GenericPlayerInitialization ( AController * Controller)
overrideprotectedvirtual
30{
31 Super::GenericPlayerInitialization(Controller);
32 APlayerController* NewPlayer = Cast<APlayerController>(Controller);
33 if(NewPlayer == nullptr){return;}
34 RegisterPlayer(NewPlayer);
35
37
38 if(MenuGameState == nullptr)
39 {
40 MenuGameState = GetGameState<AMenuSystemGameState>();
41 }
42 AMenuSystemPlayerController* MenuPlayerController = Cast<AMenuSystemPlayerController>(NewPlayer);
43 if(MenuPlayerController != nullptr)
44 {
45 AllPlayerControllers.Add(MenuPlayerController);
46 MenuPlayerController->CreateLobbyWidget();
47 const AMenuSystemPlayerState* MenuPlayerState = MenuPlayerController->GetPlayerState<AMenuSystemPlayerState>();
48 if(MenuPlayerState != nullptr)
49 {
50 UE_LOG(LogMenuSystem, Warning, TEXT("Player State Name: %s"), *MenuPlayerState->GetUserProfile().DisplayName);
51 if(MenuGameState != nullptr)
52 {
53 // MenuGameState->AllProfiles.Add(MenuPlayerState->GetUserProfile());
54 // UE_LOG(LogMenuSystem, Warning, TEXT("GM Player Name: %s"), *MenuPlayerState->GetUserProfile().DisplayName);
56 // MenuGameState->SetInLobby(true);
57 }
58 }
59 }
60 const IMenuSystem* MenuInterface = Cast<IMenuSystem>(GetGameInstance());
61 if(MenuInterface != nullptr)
62 {
64 }
65 UE_LOG(LogMenuSystem, Warning, TEXT("Number of Players: %d, Required: %d"), NumberOfPlayers, MinNumberOfPlayers);
67 {
69 }
70 // !Temp //
72}
virtual void UpdatePlayerList()
Definition MenuSystemGameState.cpp:10
uint32 NumberOfPlayers
Definition MenuSystemLobbyGameMode.h:70
void DebugRefreshPlayerList()
Definition MenuSystemLobbyGameMode.cpp:224
uint32 MinNumberOfPlayers
Definition MenuSystemLobbyGameMode.h:71
bool bAutoStart
Definition MenuSystemLobbyGameMode.h:60
virtual void RegisterPlayer(APlayerController *NewPlayer)
Definition MenuSystemLobbyGameMode.cpp:84
void StartCountdown()
Definition MenuSystemLobbyGameMode.cpp:181
Definition MenuSystemPlayerController.h:13
virtual FUserProfile GetUserProfile() const override
Definition MenuSystemPlayerState.h:49
virtual int32 GetMinNumberOfPlayersToStart() const =0
FString DisplayName
Definition BaseData.h:1243

◆ HandleSeamlessTravelPlayer()

void AMenuSystemLobbyGameMode::HandleSeamlessTravelPlayer ( AController *& Controller)
overrideprotectedvirtual
80{
81 Super::HandleSeamlessTravelPlayer(Controller);
82}

◆ Logout()

void AMenuSystemLobbyGameMode::Logout ( AController * Exiting)
overrideprotectedvirtual
154{
155 Super::Logout(Exiting);
156 AMenuSystemPlayerController* MenuSystemPlayerController = Cast<AMenuSystemPlayerController>(Exiting);
157 if(MenuSystemPlayerController != nullptr)
158 {
159 AllPlayerControllers.Remove(MenuSystemPlayerController);
160 }
162 UE_LOG(LogMenuSystem, Warning, TEXT("Number of Players: %d"), NumberOfPlayers);
163}

◆ NotifyPlayersCountdownCanceled()

void AMenuSystemLobbyGameMode::NotifyPlayersCountdownCanceled ( )
private
252{
253 for(const auto PlayerController : AllPlayerControllers)
254 {
255 PlayerController->CancelCountdown();
256 }
257}

◆ NotifyPlayersCountdownStarted()

void AMenuSystemLobbyGameMode::NotifyPlayersCountdownStarted ( const int32 Delay)
private
244{
245 for(const auto PlayerController : AllPlayerControllers)
246 {
247 PlayerController->StartCountdown(Delay);
248 }
249}

◆ PostLogin()

void AMenuSystemLobbyGameMode::PostLogin ( APlayerController * NewPlayer)
overrideprotectedvirtual
75{
76 Super::PostLogin(NewPlayer);
77}

◆ RegisterPlayer()

void AMenuSystemLobbyGameMode::RegisterPlayer ( APlayerController * NewPlayer)
virtual
85{
86 FUniqueNetIdRepl UniqueNetIdRepl;
87 if(NewPlayer->IsLocalController())
88 {
89 const ULocalPlayer* LocalPlayer = NewPlayer->GetLocalPlayer();
90 if(LocalPlayer != nullptr)
91 {
92 UniqueNetIdRepl = LocalPlayer->GetPreferredUniqueNetId();
93 }
94 else
95 {
96 const UNetConnection* RemoteNetConnection = Cast<UNetConnection>(NewPlayer->Player);
97 check(IsValid(RemoteNetConnection));
98 UniqueNetIdRepl = RemoteNetConnection->PlayerId;
99 }
100 }
101 else
102 {
103 const UNetConnection* RemoteNetConnection = Cast<UNetConnection>(NewPlayer->Player);
104 check(IsValid(RemoteNetConnection));
105 UniqueNetIdRepl = RemoteNetConnection->PlayerId;
106 }
107 const TSharedPtr<const FUniqueNetId> UniqueNetId = UniqueNetIdRepl.GetUniqueNetId();
108 //- extra added error check from pre login //
109 if(UniqueNetId == nullptr){Logout(NewPlayer);return;}
110 check(UniqueNetId != nullptr)
111 const IOnlineSubsystem* OnlineSubsystem = Online::GetSubsystem(NewPlayer->GetWorld());
112 if(OnlineSubsystem != nullptr)
113 {
114 const IOnlineSessionPtr Session = OnlineSubsystem->GetSessionInterface();
115 if(Session != nullptr)
116 {
117 const IMenuSystem* MenuSystem = Cast<IMenuSystem>(GetGameInstance());
118 if(MenuSystem)
119 {
120 const bool bRegistrationSuccess = Session->RegisterPlayer(FName(MenuSystem->GetCurrentSessionName()),*UniqueNetId, false);
121 if(bRegistrationSuccess)
122 {
123 const IOnlineIdentityPtr OnlineIdentity = OnlineSubsystem->GetIdentityInterface();
124 if(OnlineIdentity != nullptr)
125 {
126 const FString PlayerName = OnlineIdentity->GetPlayerNickname(*UniqueNetId);
127 SetPlayerName(NewPlayer, PlayerName);
128 }
129 UE_LOG(LogMenuSystem,Warning,TEXT("Player Registered!, "));
130 }
131 }
132 }
133 }
134}
void SetPlayerName(const APlayerController *Player, const FString &Name) const
Definition MenuSystemLobbyGameMode.cpp:136
virtual void Logout(AController *Exiting) override
Definition MenuSystemLobbyGameMode.cpp:153
Definition MenuSystem.Build.cs:6

◆ SetPlayerName()

void AMenuSystemLobbyGameMode::SetPlayerName ( const APlayerController * Player,
const FString & Name ) const
protected
137{
138 UE_LOG(LogMenuSystem,Warning,TEXT("Player Name: %s"), *Name);
139 AMenuSystemPlayerState* MenuPlayerState = Player->GetPlayerState<AMenuSystemPlayerState>();
140 if(MenuPlayerState != nullptr)
141 {
142 FUserProfile OnlineUserProfile;
143 OnlineUserProfile.DisplayName = Name;
144 MenuPlayerState->SetUserProfile(OnlineUserProfile);
145 UE_LOG(LogMenuSystem, Warning, TEXT("Player State Name: %s"), *MenuPlayerState->GetUserProfile().DisplayName);
146 if(MenuGameState != nullptr)
147 {
149 }
150 }
151}
virtual void SetUserProfile(const FUserProfile &UpdatedUserProfile) override
Definition MenuSystemPlayerState.h:55

◆ StartCountdown()

void AMenuSystemLobbyGameMode::StartCountdown ( )
182{
184 GetWorldTimerManager().SetTimer(LoadMapTimerHandle, this, &AMenuSystemLobbyGameMode::StartGame, StartDelay, false);
185}
void NotifyPlayersCountdownStarted(const int32 Delay)
Definition MenuSystemLobbyGameMode.cpp:243
int32 StartDelay
Definition MenuSystemLobbyGameMode.h:58
void StartGame() const
Definition MenuSystemLobbyGameMode.cpp:173

◆ StartGame()

void AMenuSystemLobbyGameMode::StartGame ( ) const
private
174{
175 UE_LOG(LogMenuSystem, Warning,TEXT("LoadMap"));
176 IMenuSystem* MenuInterface = Cast<IMenuSystem>(GetGameInstance());
177 if(MenuInterface == nullptr) return;
178 MenuInterface->StartSession();
179}
virtual void StartSession()=0

◆ SwapPlayerControllers()

void AMenuSystemLobbyGameMode::SwapPlayerControllers ( APlayerController * OldPC,
APlayerController * NewPC )
overrideprotectedvirtual
260{
261 Super::SwapPlayerControllers(OldPC, NewPC);
262}

Member Data Documentation

◆ AllPlayerControllers

TArray<class AMenuSystemPlayerController*> AMenuSystemLobbyGameMode::AllPlayerControllers

◆ bAutoStart

bool AMenuSystemLobbyGameMode::bAutoStart = false
protected

◆ LoadMapTimerHandle

FTimerHandle AMenuSystemLobbyGameMode::LoadMapTimerHandle
private

◆ MenuGameState

class AMenuSystemGameState* AMenuSystemLobbyGameMode::MenuGameState = nullptr
protected

◆ MinNumberOfPlayers

uint32 AMenuSystemLobbyGameMode::MinNumberOfPlayers = 2
private

◆ NumberOfPlayers

uint32 AMenuSystemLobbyGameMode::NumberOfPlayers = 0
private

◆ StartDelay

int32 AMenuSystemLobbyGameMode::StartDelay = 5
protected

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