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

#include <LobbyMenuSystem.h>

Inheritance diagram for ULobbyMenuSystem:

Public Member Functions

virtual void NativePreConstruct () override
 
virtual void NativeConstruct () override
 
void SetPlayers (const TArray< FUserProfile > &Players) const
 
void AddPlayer (const FUserProfile &Player) const
 
void StartCountdown (const int32 Delay)
 
void CancelCountdown ()
 
void LeaveLobby ()
 
bool GetIsLoading () const
 
bool GetIsHostLobby () const
 

Protected Member Functions

virtual bool Initialize () override
 
void LoadingStarted ()
 
void CountdownStarted ()
 
void CountdownCanceled ()
 

Protected Attributes

FString StartButtonText = "Start Game"
 
FString StartButtonAltText = "Cancel"
 
TArray< bool > ClientButtons = { true, false, false, false, false }
 
class USingleMenuSystemWidgetLobbyMenu = nullptr
 
class UPlayerCardListPlayerCardList = nullptr
 
class UTextBlock * CountDownTextBlock = nullptr
 

Private Member Functions

void MenuButtonSelected (const int32 Index)
 
void ClientMenuButtonSelected (const int32 Index)
 
void SetCountdownTextBlock () const
 
void Countdown ()
 

Private Attributes

bool bIsLoading = false
 
bool bCounting = false
 
bool bHostLobby = false
 
int32 CountdownTime = 10
 
int32 CountdownTimeTotal = 15
 
FTimerHandle CountdownTimerHandle
 

Member Function Documentation

◆ AddPlayer()

void ULobbyMenuSystem::AddPlayer ( const FUserProfile & Player) const
63{
65}
class UPlayerCardList * PlayerCardList
Definition LobbyMenuSystem.h:64
void AddPlayer(const FUserProfile &Player)
Definition PlayerCardList.cpp:29

◆ CancelCountdown()

void ULobbyMenuSystem::CancelCountdown ( )
202{
203 UE_LOG(LogMenuSystem, Warning, TEXT("Cancel Timer Request"));
204 if(!bIsLoading)
205 {
206 GetWorld()->GetTimerManager().ClearTimer(CountdownTimerHandle);
207 bCounting = false;
208 // LobbyMenu->AltTextButtons = {false};
209 UE_LOG(LogMenuSystem, Warning, TEXT("Cancel Timer"));
213 bIsLoading = false;
215 }
216}
int32 CountdownTimeTotal
Definition LobbyMenuSystem.h:84
void SetCountdownTextBlock() const
Definition LobbyMenuSystem.cpp:168
int32 CountdownTime
Definition LobbyMenuSystem.h:83
bool bCounting
Definition LobbyMenuSystem.h:80
FTimerHandle CountdownTimerHandle
Definition LobbyMenuSystem.h:86
bool bIsLoading
Definition LobbyMenuSystem.h:79
class USingleMenuSystemWidget * LobbyMenu
Definition LobbyMenuSystem.h:59
FString StartButtonText
Definition LobbyMenuSystem.h:50
void CountdownCanceled()
TArray< FString > ButtonTextList
Definition SingleMenuSystemWidget.h:55

◆ ClientMenuButtonSelected()

void ULobbyMenuSystem::ClientMenuButtonSelected ( const int32 Index)
private
140{
141 switch (Index)
142 {
143 //- Ready //
144 default:
145 case 0:
146 {
147 // AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
148 // if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
149 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
150 // LobbyGameMode->SetPlayerReady(GetOwningPlayer(), true);
151 }
152 break;
153 case 1:
154
155 break;
156 case 2:
157 case 3:
158 case 4:
159 break;
160 case 5:
161 LeaveLobby();
162 break;
163 case 6:
164 break;
165 }
166}
void LeaveLobby()
Definition LobbyMenuSystem.cpp:218

◆ Countdown()

void ULobbyMenuSystem::Countdown ( )
private
186{
190 if(CountdownTime <= 0.0f)
191 {
192 GetWorld()->GetTimerManager().ClearTimer(CountdownTimerHandle);
194 bIsLoading = true;
196 CountDownTextBlock->SetText(FText::FromString("Loading"));
197 // UE_LOG(LogMenuSystem, Warning, TEXT("Countdown FINISHED"));
198 }
199}
class UTextBlock * CountDownTextBlock
Definition LobbyMenuSystem.h:67
FString StartButtonAltText
Definition LobbyMenuSystem.h:52
void DisableAllButtons() const
Definition SingleMenuSystemWidget.cpp:176

◆ CountdownCanceled()

void ULobbyMenuSystem::CountdownCanceled ( )
protected

◆ CountdownStarted()

void ULobbyMenuSystem::CountdownStarted ( )
protected

◆ GetIsHostLobby()

bool ULobbyMenuSystem::GetIsHostLobby ( ) const
inline
35{return bHostLobby;};
bool bHostLobby
Definition LobbyMenuSystem.h:82

◆ GetIsLoading()

bool ULobbyMenuSystem::GetIsLoading ( ) const
inline
33{return bIsLoading;};

◆ Initialize()

bool ULobbyMenuSystem::Initialize ( )
overrideprotectedvirtual
13{
14 const bool Success = Super::Initialize();
15 if(!Success) return false;
16 if (!ensure(LobbyMenu != nullptr)) return false;
17 if (!ensure(PlayerCardList != nullptr)) return false;
18 if (!ensure(CountDownTextBlock != nullptr)) return false;
20 return true;
21}
void MenuButtonSelected(const int32 Index)
Definition LobbyMenuSystem.cpp:68
FOnMenuButtonSelected OnMenuButtonSelected
Definition SingleMenuSystemWidget.h:22

◆ LeaveLobby()

void ULobbyMenuSystem::LeaveLobby ( )

Problem code with STEAM and not using Presence //

219{
220 const UWorld* World = GetWorld();
221 if(!ensure(World != nullptr)) return;
222 APlayerController* PlayerController = GetOwningPlayer();
223 if(World->GetNetMode() == NM_ListenServer)
224 {
225 AGameModeBase* GameMode = World->GetAuthGameMode<AGameModeBase>();
226 if(GameMode)
227 {
228 GameMode->ReturnToMainMenuHost();
229 }
230 }
231 else
232 {
233 if(PlayerController != nullptr)
234 {
235 PlayerController->ClientReturnToMainMenuWithTextReason(FText::FromString("Back to main menu"));
236 }
237 }
239 IMenuSystem* MenuSystem = Cast<IMenuSystem>(GetGameInstance());
240 if(MenuSystem != nullptr)
241 {
242 MenuSystem->DestroySession();
243 }
244}
Definition MenuSystem.h:19
Definition MenuSystem.Build.cs:6

◆ LoadingStarted()

void ULobbyMenuSystem::LoadingStarted ( )
protected

◆ MenuButtonSelected()

void ULobbyMenuSystem::MenuButtonSelected ( const int32 Index)
private
69{
70 if(GetOwningPlayer()->GetLocalRole() != ROLE_Authority)
71 {
73 return;
74 }
75 switch (Index)
76 {
77 //- Start Game //
78 default:
79 case 0:
80 if(bCounting)
81 {
82 AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
83 if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
84 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
85 LobbyGameMode->CancelCountdown();
86 }
87 else
88 {
89 AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
90 if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
91 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
92 LobbyGameMode->StartCountdown();
93 }
94 break;
95 case 1:
96 //- Debug Add player XP
97 {
98 AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
99 if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
100 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
101 LobbyGameMode->DebugAddPlayerXP(GetOwningPlayer(), 1000);
102 }
103 break;
104 case 2:
105 //- Debug Save Profile //
106 {
107 AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
108 if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
109 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
110 LobbyGameMode->DebugSaveProfile(GetOwningPlayer());
111 }
112 break;
113 case 3:
114 //- Debug Load Profile //
115 {
116 AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
117 if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
118 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
119 LobbyGameMode->DebugLoadProfile(GetOwningPlayer());
120 }
121 break;
122 case 4:
123 //- Debug Refresh Profiles //
124 {
125 AMenuSystemLobbyGameMode* LobbyGameMode = Cast<AMenuSystemLobbyGameMode>(GetWorld()->GetAuthGameMode());
126 if(LobbyGameMode == nullptr){UE_LOG(LogMenuSystem, Error, TEXT("Lobby Game Mode Cast Failed"));return;}
127 // UE_LOG(LogMenuSystem, Warning, TEXT("Lobby Game Mode Cast Passed"));
128 LobbyGameMode->DebugRefreshPlayerList();
129 }
130 break;
131 case 5:
132 LeaveLobby();
133 break;
134 case 6:
135 break;
136 }
137}
Definition MenuSystemLobbyGameMode.h:11
void DebugLoadProfile(APlayerController *Player)
Definition MenuSystemLobbyGameMode.cpp:207
void DebugAddPlayerXP(APlayerController *Player, const int32 XP=100)
Definition MenuSystemLobbyGameMode.cpp:187
void DebugRefreshPlayerList()
Definition MenuSystemLobbyGameMode.cpp:224
void DebugSaveProfile(APlayerController *Player)
Definition MenuSystemLobbyGameMode.cpp:200
void CancelCountdown()
Definition MenuSystemLobbyGameMode.cpp:166
void StartCountdown()
Definition MenuSystemLobbyGameMode.cpp:181
void ClientMenuButtonSelected(const int32 Index)
Definition LobbyMenuSystem.cpp:139

◆ NativeConstruct()

void ULobbyMenuSystem::NativeConstruct ( )
overridevirtual
33{
34 Super::NativeConstruct();
36 LobbyMenu->AltTextButtons = {false};
37 if(GetOwningPlayer() != nullptr)
38 {
39 if(GetOwningPlayer()->GetLocalRole() == ROLE_Authority)
40 {
41
42 bHostLobby = true;
43 LobbyMenu->ActivateWidget();
44 // LobbyMenu->SetFocusToFirstVisibleOption();
45 }
46 else
47 {
50 }
51 }
52 LobbyMenu->ActivateWidget();
53 // LobbyMenu->SetFocusToFirstVisibleOption();
54}
TArray< bool > ClientButtons
Definition LobbyMenuSystem.h:55
void CreateSelectionButtons()
Definition SingleMenuSystemWidget.cpp:92
TArray< bool > AltTextButtons
Definition SingleMenuSystemWidget.h:62

◆ NativePreConstruct()

void ULobbyMenuSystem::NativePreConstruct ( )
overridevirtual
25{
26 Super::NativePreConstruct();
28 LobbyMenu->AltTextButtons = {false};
29
30}

◆ SetCountdownTextBlock()

void ULobbyMenuSystem::SetCountdownTextBlock ( ) const
private
169{
170 CountDownTextBlock->SetText(FText::AsNumber(CountdownTime));
171}

◆ SetPlayers()

void ULobbyMenuSystem::SetPlayers ( const TArray< FUserProfile > & Players) const
57{
58 PlayerCardList->SetPlayers(Players);
59 UE_LOG(LogMenuSystem, Warning, TEXT("Set Players in Lobby Widget"));
60}
void SetPlayers(const TArray< FUserProfile > &Players)
Definition PlayerCardList.cpp:40

◆ StartCountdown()

void ULobbyMenuSystem::StartCountdown ( const int32 Delay)
174{
175 CountdownTimeTotal = Delay;
176 CountdownTime = Delay;
177 bIsLoading = false;
178 bCounting = true;
180 LobbyMenu->AltTextButtons = {true};
182 GetWorld()->GetTimerManager().SetTimer(CountdownTimerHandle, this, &ULobbyMenuSystem::Countdown, 1.0f, true, 1.0f);
183}
void Countdown()
Definition LobbyMenuSystem.cpp:185
void CountdownStarted()
TArray< FString > AltButtonTextList
Definition SingleMenuSystemWidget.h:57

Member Data Documentation

◆ bCounting

bool ULobbyMenuSystem::bCounting = false
private

◆ bHostLobby

bool ULobbyMenuSystem::bHostLobby = false
private

◆ bIsLoading

bool ULobbyMenuSystem::bIsLoading = false
private

◆ ClientButtons

TArray<bool> ULobbyMenuSystem::ClientButtons = { true, false, false, false, false }
protected
55{ true, false, false, false, false };

◆ CountDownTextBlock

class UTextBlock* ULobbyMenuSystem::CountDownTextBlock = nullptr
protected

◆ CountdownTime

int32 ULobbyMenuSystem::CountdownTime = 10
private

◆ CountdownTimerHandle

FTimerHandle ULobbyMenuSystem::CountdownTimerHandle
private

◆ CountdownTimeTotal

int32 ULobbyMenuSystem::CountdownTimeTotal = 15
private

◆ LobbyMenu

class USingleMenuSystemWidget* ULobbyMenuSystem::LobbyMenu = nullptr
protected

◆ PlayerCardList

class UPlayerCardList* ULobbyMenuSystem::PlayerCardList = nullptr
protected

◆ StartButtonAltText

FString ULobbyMenuSystem::StartButtonAltText = "Cancel"
protected

◆ StartButtonText

FString ULobbyMenuSystem::StartButtonText = "Start Game"
protected

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