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

#include <ModalMenuSystemWidget.h>

Inheritance diagram for UModalMenuSystemWidget:
UMenuSystemWidget UBaseActivatableWidget

Public Member Functions

 UModalMenuSystemWidget (const FObjectInitializer &ObjectInitializer)
 
virtual UWidget * NativeGetDesiredFocusTarget () const override
 
virtual bool NativeOnHandleBackAction () override
 
void SetValues (const EMenuSystemModalAlert Alert, const EMenuSystemModalType Style, FString Title, FString Description, FString LeftText, FString RightText)
 
void SetValues (const FModalData &Data)
 
void CloseWindow ()
 
void PlayOpenAnimation ()
 
void PlayCloseAnimation ()
 
int32 GetCloseButtonIndex () const
 
int32 GetMainButtonIndex () const
 
- Public Member Functions inherited from UMenuSystemWidget
 UMenuSystemWidget (const FObjectInitializer &ObjectInitializer)
 
void SetMenuInterface (IMenuSystem *Interface)
 
void Setup ()
 
virtual void OpenConfirmationMessage (const FModalData &ModalData)
 
virtual void SetServerList (const TArray< FServerRow > &ServerInfo)
 
void SetOwnerWidget (UUserWidget *Owner)
 
UUserWidget * GetOwnerWidget () const
 
void WidgetVisibilityChanged (ESlateVisibility SlateVisibility)
 
bool GetIsOnlineGame () const
 
bool GetIsPublicMatch () const
 
virtual bool GetDebuggingMode () const
 
virtual FString GetPlayerUserName () const
 
virtual bool GetIsPlayerLoggedIn () const
 
virtual FString GetCurrentSessionName () const
 
virtual EOnlineSubsystem GetOnlineSubsystem () const
 

Public Attributes

FOnModalButtonSelected OnModalButtonSelected
 
FOnCloseModal OnCloseModal
 
FModalData ModalData
 
- Public Attributes inherited from UMenuSystemWidget
FOnMenuBackButtonSelected OnMenuBackButtonSelected
 

Protected Member Functions

virtual bool Initialize () override
 
virtual void NativePreConstruct () override
 
virtual void NativeConstruct () override
 
void OnButtonClicked (const int32 Index)
 
- Protected Member Functions inherited from UMenuSystemWidget
virtual void ModalButtonSelected (const int32 Index)
 
void OnModalButtonSelectedEvent (const int32 Index)
 
virtual void ModalClosed ()
 
void OnModalClosedEvent ()
 
class UModalMenuSystemWidgetGetCurrentModal () const
 
void SetModalSlot (UPanelWidget *PanelWidget)
 
void SetNotificationSlot (UPanelWidget *PanelWidget)
 
- Protected Member Functions inherited from UBaseActivatableWidget
void LogDebugError (const FString &Message) const
 
void LogDebugError (const FString &Message, const int32 Value) const
 
void LogDebugError (const FString &Message, const float Value) const
 
void LogDebugWarning (const FString &Message) const
 
void LogDebugWarning (const FString &Message, const int32 Value) const
 
void LogDebugWarning (const FString &Message, const float Value) const
 
void LogDebugMessage (const FString &Message, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const int32 Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const float Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const bool bValue, const bool bWarning, const bool bError) const
 
void LogOnScreenMessage (const int32 Key, const FString &Message, FColor Color=FColor::Green) const
 
void SetCategoryName (const FLogCategoryBase &Category)
 

Protected Attributes

class USoundBase * DefaultOpenSound = nullptr
 
class USoundBase * NotificationSound = nullptr
 
class USoundBase * WarningSound = nullptr
 
class USoundBase * ErrorSound = nullptr
 
FLinearColor GeneralColor
 
FLinearColor SystemColor
 
FLinearColor WarningColor
 
FLinearColor ErrorColor
 
float SpacerSize = 17.0f
 
int32 CloseButtonIndex = 0
 
int32 MainButtonIndex = 1
 
float NotificationLifetime = 3.0f
 
float NotificationPadding = 5.0f
 
float BorderPadding = 32.0f
 
class UHorizontalBox * MainButtonContainer = nullptr
 
class UTextBlock * DescriptionTextBlock = nullptr
 
class UTextBlock * TitleTextBlock = nullptr
 
class UBorder * ModalBorder = nullptr
 
class UVerticalBox * MainVerticalBox = nullptr
 
class UHorizontalBox * ButtonHorizontalBox = nullptr
 
class UBorder * HighlightColorBorder = nullptr
 
class UStackBox * ExtraButtons = nullptr
 
class USelectionButtonMenuSystemCloseButton = nullptr
 
class USelectionButtonMenuSystemMainButton = nullptr
 
- Protected Attributes inherited from UMenuSystemWidget
IMenuSystemMenuInterface = nullptr
 
class IModalInterfaceModalInterface = nullptr
 
bool bIsController = false
 
bool bIsKeyboard = false
 
bool bMouse = false
 
- Protected Attributes inherited from UBaseActivatableWidget
bool bDebuggingMode = false
 

Private Member Functions

void PlaySound (USoundBase *Sound) const
 
void ApplySettings ()
 
void SetModal ()
 
void CreateExtraButtons ()
 

Private Attributes

ETextJustify::Type JustifyType = ETextJustify::Left
 
FLinearColor ColorType
 
TSubclassOf< class UUserWidget > SelectionButtonClass
 
FTimerHandle NotificationTimerHandle
 

Constructor & Destructor Documentation

◆ UModalMenuSystemWidget()

UModalMenuSystemWidget::UModalMenuSystemWidget ( const FObjectInitializer & ObjectInitializer)
explicit
17 : Super(ObjectInitializer)
18{
19 const ConstructorHelpers::FClassFinder<UUserWidget> SelectionButtonBP(TEXT("/MenuSystem/Widgets/CommonUI/WBP_SelectionButton"));
20 if (!ensure(SelectionButtonBP.Class != nullptr)) return;
21 SelectionButtonClass = SelectionButtonBP.Class;
22 bIsBackHandler = true;
23 bIsModal = true;
24}
TSubclassOf< class UUserWidget > SelectionButtonClass
Definition ModalMenuSystemWidget.h:145

Member Function Documentation

◆ ApplySettings()

void UModalMenuSystemWidget::ApplySettings ( )
private
125{
126 switch(ModalData.Style)
127 {
128 default:
130 JustifyType = ETextJustify::Left;
131 break;
133 JustifyType = ETextJustify::Center;
134 break;
136 JustifyType = ETextJustify::Center;
137 break;
139 JustifyType = ETextJustify::Center;
140 break;
141
143 JustifyType = ETextJustify::Left;
144 break;
145 }
146 switch(ModalData.Alert)
147 {
148 default:
151 break;
154 break;
157 break;
160 break;
161 }
162
163 DescriptionTextBlock->SetJustification(JustifyType);
164 TitleTextBlock->SetJustification(JustifyType);
165 TitleTextBlock->SetText(FText::FromString(ModalData.Title));
166 DescriptionTextBlock->SetText(FText::FromString(ModalData.Description));
167
168 const FSlateColor CurrentColor(ColorType);
169 TitleTextBlock->SetColorAndOpacity(CurrentColor);
170 if(MainButton != nullptr)
171 {
174 }
175 if(CloseButton != nullptr)
176 {
179 }
180
181 HighlightColorBorder->SetBrushColor(ColorType);
182
183 // TitleTextBlock->SetColorAndOpacity();
184 if(ModalData.MainButtonText.IsEmpty())
185 {
186 MainButtonContainer->SetVisibility(ESlateVisibility::Collapsed);
187 }
188
190 {
192 }
194 {
196 }
198 {
200 if(GetOwningPlayer() != nullptr)
201 {
202 GetOwningPlayer()->GetWorldTimerManager().SetTimer(NotificationTimerHandle, this, &UModalMenuSystemWidget::PlayCloseAnimation, NotificationLifetime);
203 }
204 }
205 else
206 {
208 }
209}
float NotificationLifetime
Definition ModalMenuSystemWidget.h:94
FLinearColor ErrorColor
Definition ModalMenuSystemWidget.h:86
FLinearColor GeneralColor
Definition ModalMenuSystemWidget.h:80
class UHorizontalBox * MainButtonContainer
Definition ModalMenuSystemWidget.h:102
void PlaySound(USoundBase *Sound) const
Definition ModalMenuSystemWidget.cpp:116
class UTextBlock * DescriptionTextBlock
Definition ModalMenuSystemWidget.h:104
FTimerHandle NotificationTimerHandle
Definition ModalMenuSystemWidget.h:147
FLinearColor ColorType
Definition ModalMenuSystemWidget.h:143
class USoundBase * NotificationSound
Definition ModalMenuSystemWidget.h:72
ETextJustify::Type JustifyType
Definition ModalMenuSystemWidget.h:142
class USoundBase * ErrorSound
Definition ModalMenuSystemWidget.h:76
int32 CloseButtonIndex
Definition ModalMenuSystemWidget.h:90
class UTextBlock * TitleTextBlock
Definition ModalMenuSystemWidget.h:106
class USoundBase * WarningSound
Definition ModalMenuSystemWidget.h:74
FLinearColor WarningColor
Definition ModalMenuSystemWidget.h:84
class USelectionButtonMenuSystem * MainButton
Definition ModalMenuSystemWidget.h:124
FModalData ModalData
Definition ModalMenuSystemWidget.h:48
int32 MainButtonIndex
Definition ModalMenuSystemWidget.h:92
class USelectionButtonMenuSystem * CloseButton
Definition ModalMenuSystemWidget.h:121
class USoundBase * DefaultOpenSound
Definition ModalMenuSystemWidget.h:70
class UBorder * HighlightColorBorder
Definition ModalMenuSystemWidget.h:114
FLinearColor SystemColor
Definition ModalMenuSystemWidget.h:82
void SetButtonIndex(const int32 Index)
Definition SelectionButtonMenuSystem.h:41
void SetButtonText(FString Text) const
Definition SelectionButtonMenuSystem.cpp:107
EMenuSystemModalType Style
Definition MenuData.h:272
FString Description
Definition MenuData.h:276
EMenuSystemModalAlert Alert
Definition MenuData.h:270
FString MainButtonText
Definition MenuData.h:278
FString Title
Definition MenuData.h:274
FString CloseButtonText
Definition MenuData.h:280

◆ CloseWindow()

void UModalMenuSystemWidget::CloseWindow ( )
270{
271 RemoveFromParent();
272}

◆ CreateExtraButtons()

void UModalMenuSystemWidget::CreateExtraButtons ( )
private
78{
79 if(SelectionButtonClass.Get() == nullptr){return;}
80 if(!ModalData.ExtraButtons.IsEmpty())
81 {
82 ExtraButtons->ClearChildren();
83 for(int i = 0; i < ModalData.ExtraButtons.Num(); i++)
84 {
85 USelectionButtonMenuSystem* SelectionButton = WidgetTree->ConstructWidget<USelectionButtonMenuSystem>(SelectionButtonClass.Get());
86 if(SelectionButton != nullptr)
87 {
88 if(!ModalData.ExtraButtons[i].IsEmpty())
89 {
90 SelectionButton->SetButtonText(ModalData.ExtraButtons[i]);
91 SelectionButton->SetButtonIndex(i + 2); //- Start Index after Main and Close Buttons //
92 if(ModalData.DisabledExtraButtons.IsValidIndex(i))
93 {
94 SelectionButton->SetDisabled(ModalData.DisabledExtraButtons[i]);
95 }
96 }
97 else
98 {
99 //- Hide button but leave space //
100 SelectionButton->SetVisibility(ESlateVisibility::Hidden);
101 }
102 SelectionButton->OnSelectionButtonClicked.AddUniqueDynamic(this, &UModalMenuSystemWidget::OnButtonClicked);
103 ExtraButtons->AddChild(SelectionButton);
104 USpacer* Spacer = WidgetTree->ConstructWidget<USpacer>(USpacer::StaticClass());
105 if(Spacer != nullptr)
106 {
107 Spacer->SetSize(FVector2D(SpacerSize,SpacerSize));
108 ExtraButtons->AddChild(Spacer);
109 }
110 }
111 }
112 }
113}
void OnButtonClicked(const int32 Index)
Definition ModalMenuSystemWidget.cpp:274
float SpacerSize
Definition ModalMenuSystemWidget.h:88
class UStackBox * ExtraButtons
Definition ModalMenuSystemWidget.h:117
Definition SelectionButtonMenuSystem.h:16
void SetDisabled(const bool bValue=true)
Definition SelectionButtonMenuSystem.h:48
FOnSelectionButtonClicked OnSelectionButtonClicked
Definition SelectionButtonMenuSystem.h:30
TArray< bool > DisabledExtraButtons
Definition MenuData.h:286
TArray< FString > ExtraButtons
Definition MenuData.h:283

◆ GetCloseButtonIndex()

int32 UModalMenuSystemWidget::GetCloseButtonIndex ( ) const
inline

Set Styles for Modals 1 = Centered style

Parameters
57{return CloseButtonIndex;};

◆ GetMainButtonIndex()

int32 UModalMenuSystemWidget::GetMainButtonIndex ( ) const
inline
58{return MainButtonIndex;};

◆ Initialize()

bool UModalMenuSystemWidget::Initialize ( )
overrideprotectedvirtual

Reimplemented from UMenuSystemWidget.

42{
43 const bool Success = Super::Initialize();
44 if(!Success) return false;
45 if (!ensure(CloseButton != nullptr)) return false;
46 if (!ensure(MainButton != nullptr)) return false;
47 if (!ensure(MainButtonContainer != nullptr)) return false;
48 if (!ensure(DescriptionTextBlock != nullptr)) return false;
49 if (!ensure(TitleTextBlock != nullptr)) return false;
50 if (!ensure(HighlightColorBorder != nullptr)) return false;
51 if (!ensure(ExtraButtons != nullptr)) return false;
52 if (!ensure(ModalBorder != nullptr)) return false;
53 if (!ensure(MainVerticalBox != nullptr)) return false;
54 if (!ensure(ButtonHorizontalBox != nullptr)) return false;
57 return true;
58}
class UHorizontalBox * ButtonHorizontalBox
Definition ModalMenuSystemWidget.h:112
class UVerticalBox * MainVerticalBox
Definition ModalMenuSystemWidget.h:110
class UBorder * ModalBorder
Definition ModalMenuSystemWidget.h:108

◆ NativeConstruct()

void UModalMenuSystemWidget::NativeConstruct ( )
overrideprotectedvirtual

Reimplemented from UMenuSystemWidget.

67{
68 Super::NativeConstruct();
69 SetModal();
71 {
73 return;
74 }
75}
void SetModal()
Definition ModalMenuSystemWidget.cpp:211

◆ NativeGetDesiredFocusTarget()

UWidget * UModalMenuSystemWidget::NativeGetDesiredFocusTarget ( ) const
overridevirtual
27{
29 {
30 return Super::NativeGetDesiredFocusTarget();
31 }
32 return CloseButton;
33}

◆ NativeOnHandleBackAction()

bool UModalMenuSystemWidget::NativeOnHandleBackAction ( )
overridevirtual

Reimplemented from UMenuSystemWidget.

36{
38 return Super::NativeOnHandleBackAction();
39}

◆ NativePreConstruct()

void UModalMenuSystemWidget::NativePreConstruct ( )
overrideprotectedvirtual
61{
62 Super::NativePreConstruct();
63 SetModal();
64}

◆ OnButtonClicked()

void UModalMenuSystemWidget::OnButtonClicked ( const int32 Index)
protected
275{
276 if(Index == CloseButtonIndex)
277 {
278 CloseWindow();
279 OnCloseModal.Broadcast();
280 }
281 OnModalButtonSelected.Broadcast(Index);
282}
FOnModalButtonSelected OnModalButtonSelected
Definition ModalMenuSystemWidget.h:23
FOnCloseModal OnCloseModal
Definition ModalMenuSystemWidget.h:25
void CloseWindow()
Definition ModalMenuSystemWidget.cpp:269

◆ PlayCloseAnimation()

void UModalMenuSystemWidget::PlayCloseAnimation ( )

◆ PlayOpenAnimation()

void UModalMenuSystemWidget::PlayOpenAnimation ( )

◆ PlaySound()

void UModalMenuSystemWidget::PlaySound ( USoundBase * Sound) const
private
117{
118 if(GetOwningPlayer() != nullptr && Sound != nullptr)
119 {
120 UGameplayStatics::PlaySound2D(GetOwningPlayer(), Sound);
121 }
122}

◆ SetModal()

void UModalMenuSystemWidget::SetModal ( )
private
212{
215 UVerticalBoxSlot* DescriptionTextSlot = Cast<UVerticalBoxSlot>(DescriptionTextBlock->Slot);
216 UVerticalBoxSlot* ButtonsBoxSlot = Cast<UVerticalBoxSlot>(ButtonHorizontalBox->Slot);
217
219 {
220 ModalBorder->SetPadding(NotificationPadding);
221 ExtraButtons->SetVisibility(ESlateVisibility::Collapsed);
222 if(ButtonsBoxSlot != nullptr)
223 {
224 ButtonsBoxSlot->SetHorizontalAlignment(HAlign_Right);
225 }
226 if(DescriptionTextSlot != nullptr)
227 {
228 DescriptionTextSlot->SetPadding(FMargin(0.0f, NotificationPadding));
229 }
230 return;
231 }
232 if(DescriptionTextSlot != nullptr)
233 {
234 DescriptionTextSlot->SetPadding(FMargin(0.0f, BorderPadding));
235 }
236 if(ButtonsBoxSlot != nullptr)
237 {
238 ButtonsBoxSlot->SetHorizontalAlignment(HAlign_Center);
239 }
240 ModalBorder->SetPadding(BorderPadding);
241}
float NotificationPadding
Definition ModalMenuSystemWidget.h:96
void ApplySettings()
Definition ModalMenuSystemWidget.cpp:124
float BorderPadding
Definition ModalMenuSystemWidget.h:98
void CreateExtraButtons()
Definition ModalMenuSystemWidget.cpp:77

◆ SetValues() [1/2]

void UModalMenuSystemWidget::SetValues ( const EMenuSystemModalAlert Alert,
const EMenuSystemModalType Style,
FString Title,
FString Description,
FString LeftText,
FString RightText )
246{
248 ModalData.Style = Style;
249 ModalData.Title = Title;
250 ModalData.Description = Description;
251 ModalData.MainButtonText = LeftText;
252 ModalData.CloseButtonText = RightText;
253 // CloseButton->SetButtonFocus();
255}

◆ SetValues() [2/2]

void UModalMenuSystemWidget::SetValues ( const FModalData & Data)
258{
259 ModalData.Alert = Data.Alert;
260 ModalData.Style = Data.Style;
261 ModalData.Title = Data.Title;
265 // CloseButton->SetButtonFocus();
267}

Member Data Documentation

◆ BorderPadding

float UModalMenuSystemWidget::BorderPadding = 32.0f
protected

◆ ButtonHorizontalBox

class UHorizontalBox* UModalMenuSystemWidget::ButtonHorizontalBox = nullptr
protected

◆ CloseButton

class USelectionButtonMenuSystem* UModalMenuSystemWidget::CloseButton = nullptr
protected

◆ CloseButtonIndex

int32 UModalMenuSystemWidget::CloseButtonIndex = 0
protected

◆ ColorType

FLinearColor UModalMenuSystemWidget::ColorType
private

◆ DefaultOpenSound

class USoundBase* UModalMenuSystemWidget::DefaultOpenSound = nullptr
protected

◆ DescriptionTextBlock

class UTextBlock* UModalMenuSystemWidget::DescriptionTextBlock = nullptr
protected

◆ ErrorColor

FLinearColor UModalMenuSystemWidget::ErrorColor
protected

◆ ErrorSound

class USoundBase* UModalMenuSystemWidget::ErrorSound = nullptr
protected

◆ ExtraButtons

class UStackBox* UModalMenuSystemWidget::ExtraButtons = nullptr
protected

◆ GeneralColor

FLinearColor UModalMenuSystemWidget::GeneralColor
protected

◆ HighlightColorBorder

class UBorder* UModalMenuSystemWidget::HighlightColorBorder = nullptr
protected

◆ JustifyType

ETextJustify::Type UModalMenuSystemWidget::JustifyType = ETextJustify::Left
private

◆ MainButton

class USelectionButtonMenuSystem* UModalMenuSystemWidget::MainButton = nullptr
protected

◆ MainButtonContainer

class UHorizontalBox* UModalMenuSystemWidget::MainButtonContainer = nullptr
protected

◆ MainButtonIndex

int32 UModalMenuSystemWidget::MainButtonIndex = 1
protected

◆ MainVerticalBox

class UVerticalBox* UModalMenuSystemWidget::MainVerticalBox = nullptr
protected

◆ ModalBorder

class UBorder* UModalMenuSystemWidget::ModalBorder = nullptr
protected

◆ ModalData

FModalData UModalMenuSystemWidget::ModalData

◆ NotificationLifetime

float UModalMenuSystemWidget::NotificationLifetime = 3.0f
protected

◆ NotificationPadding

float UModalMenuSystemWidget::NotificationPadding = 5.0f
protected

◆ NotificationSound

class USoundBase* UModalMenuSystemWidget::NotificationSound = nullptr
protected

◆ NotificationTimerHandle

FTimerHandle UModalMenuSystemWidget::NotificationTimerHandle
private

◆ OnCloseModal

FOnCloseModal UModalMenuSystemWidget::OnCloseModal

◆ OnModalButtonSelected

FOnModalButtonSelected UModalMenuSystemWidget::OnModalButtonSelected

◆ SelectionButtonClass

TSubclassOf<class UUserWidget> UModalMenuSystemWidget::SelectionButtonClass
private

◆ SpacerSize

float UModalMenuSystemWidget::SpacerSize = 17.0f
protected

◆ SystemColor

FLinearColor UModalMenuSystemWidget::SystemColor
protected

◆ TitleTextBlock

class UTextBlock* UModalMenuSystemWidget::TitleTextBlock = nullptr
protected

◆ WarningColor

FLinearColor UModalMenuSystemWidget::WarningColor
protected

◆ WarningSound

class USoundBase* UModalMenuSystemWidget::WarningSound = nullptr
protected

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