From 5ff72d09c3ecb777f270afd7239ebb6299f1e7df Mon Sep 17 00:00:00 2001 From: koritsa Date: Fri, 12 Jun 2026 23:29:35 +0300 Subject: [PATCH] ui updates --- Content/UI/Art/Materials/MI_TabButton.uasset | 3 ++ Content/UI/Art/Materials/M_TextButton.uasset | 3 ++ Content/UI/Art/Panel.uasset | 3 ++ Content/UI/Art/Tab.uasset | 3 ++ Content/UI/Buttons/S_MainMenuButton.uasset | 3 -- Content/UI/Buttons/WBP_MainMenuButton.uasset | 3 -- Content/UI/MainMenu/S_MainMenuButton.uasset | 3 ++ .../S_MainMenuButton_Text_Default.uasset | 3 ++ .../S_MainMenuButton_Text_Focused.uasset | 3 ++ Content/UI/MainMenu/WBP_MainMenu.uasset | 4 +- Content/UI/MainMenu/WBP_MainMenuButton.uasset | 3 ++ .../Settings/WBP_GameplaySettingsTab.uasset | 4 +- Content/UI/Settings/WBP_SettingsScreen.uasset | 4 +- Content/UI/Shared/ComboBox/ComboBox.uasset | 3 ++ .../UI/Shared/ComboBox/ComboBox_Arrow.uasset | 3 ++ .../UI/Shared/ComboBox/ComboBox_MenuBG.uasset | 3 ++ Content/UI/Shared/S_Panel.uasset | 3 ++ Content/UI/Shared/S_TabButton.uasset | 3 ++ Content/UI/Shared/S_Text_TabDefault.uasset | 3 ++ Content/UI/Shared/WBP_TabButton.uasset | 3 ++ Source/NakedDesire/UI/Menu/MainMenuWidget.cpp | 14 +++---- Source/NakedDesire/UI/Menu/MainMenuWidget.h | 11 ++--- .../UI/Menu/Settings/SettingsScreenWidget.cpp | 22 ++++++---- .../UI/Menu/Settings/SettingsScreenWidget.h | 12 +++--- Source/NakedDesire/UI/TextButton.cpp | 41 +++++++++++++++++++ Source/NakedDesire/UI/TextButton.h | 33 +++++++++++++++ 26 files changed, 159 insertions(+), 37 deletions(-) create mode 100644 Content/UI/Art/Materials/MI_TabButton.uasset create mode 100644 Content/UI/Art/Materials/M_TextButton.uasset create mode 100644 Content/UI/Art/Panel.uasset create mode 100644 Content/UI/Art/Tab.uasset delete mode 100644 Content/UI/Buttons/S_MainMenuButton.uasset delete mode 100644 Content/UI/Buttons/WBP_MainMenuButton.uasset create mode 100644 Content/UI/MainMenu/S_MainMenuButton.uasset create mode 100644 Content/UI/MainMenu/S_MainMenuButton_Text_Default.uasset create mode 100644 Content/UI/MainMenu/S_MainMenuButton_Text_Focused.uasset create mode 100644 Content/UI/MainMenu/WBP_MainMenuButton.uasset create mode 100644 Content/UI/Shared/ComboBox/ComboBox.uasset create mode 100644 Content/UI/Shared/ComboBox/ComboBox_Arrow.uasset create mode 100644 Content/UI/Shared/ComboBox/ComboBox_MenuBG.uasset create mode 100644 Content/UI/Shared/S_Panel.uasset create mode 100644 Content/UI/Shared/S_TabButton.uasset create mode 100644 Content/UI/Shared/S_Text_TabDefault.uasset create mode 100644 Content/UI/Shared/WBP_TabButton.uasset create mode 100644 Source/NakedDesire/UI/TextButton.cpp create mode 100644 Source/NakedDesire/UI/TextButton.h diff --git a/Content/UI/Art/Materials/MI_TabButton.uasset b/Content/UI/Art/Materials/MI_TabButton.uasset new file mode 100644 index 00000000..755151a1 --- /dev/null +++ b/Content/UI/Art/Materials/MI_TabButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cef520b175bbfcf94580cbd9ca8969f9d0876a972125f8dd654b6725d1bd21d +size 7152 diff --git a/Content/UI/Art/Materials/M_TextButton.uasset b/Content/UI/Art/Materials/M_TextButton.uasset new file mode 100644 index 00000000..daac1bf3 --- /dev/null +++ b/Content/UI/Art/Materials/M_TextButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc8398162a2bf050ea40361ecd4035d155c0faf917ac9af85eaada3ef01c2512 +size 14675 diff --git a/Content/UI/Art/Panel.uasset b/Content/UI/Art/Panel.uasset new file mode 100644 index 00000000..8cc8a984 --- /dev/null +++ b/Content/UI/Art/Panel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:721d4c2be984fea91450bfcf6e670c809c4a6dcf7f0f629e72501de2ec3007a4 +size 13364 diff --git a/Content/UI/Art/Tab.uasset b/Content/UI/Art/Tab.uasset new file mode 100644 index 00000000..268c6e9b --- /dev/null +++ b/Content/UI/Art/Tab.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2eaac5f37dedc2e828fcc0d011859873994b1d7b1e8326b0c24ea5bd01fe0df5 +size 10866 diff --git a/Content/UI/Buttons/S_MainMenuButton.uasset b/Content/UI/Buttons/S_MainMenuButton.uasset deleted file mode 100644 index f1ef2226..00000000 --- a/Content/UI/Buttons/S_MainMenuButton.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c62d6f736de7180ee6f832b5921cc1a388dd02bb2603bc843baa19124188f528 -size 6318 diff --git a/Content/UI/Buttons/WBP_MainMenuButton.uasset b/Content/UI/Buttons/WBP_MainMenuButton.uasset deleted file mode 100644 index 8119e976..00000000 --- a/Content/UI/Buttons/WBP_MainMenuButton.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99efd15dd749e8e7104ae6aacf667d18a22587cc80efd041e5b5e0d1d0d3782c -size 68947 diff --git a/Content/UI/MainMenu/S_MainMenuButton.uasset b/Content/UI/MainMenu/S_MainMenuButton.uasset new file mode 100644 index 00000000..03333095 --- /dev/null +++ b/Content/UI/MainMenu/S_MainMenuButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e1b1819c7de4500eb5f20c6cddbec0f75c5a343f870891cc5057a8d59ca562b +size 6546 diff --git a/Content/UI/MainMenu/S_MainMenuButton_Text_Default.uasset b/Content/UI/MainMenu/S_MainMenuButton_Text_Default.uasset new file mode 100644 index 00000000..1d6d7a12 --- /dev/null +++ b/Content/UI/MainMenu/S_MainMenuButton_Text_Default.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30faef73bcdaacab5b75e8fd228ffefdcb743246aacc060cdb40b6135c646ce7 +size 6356 diff --git a/Content/UI/MainMenu/S_MainMenuButton_Text_Focused.uasset b/Content/UI/MainMenu/S_MainMenuButton_Text_Focused.uasset new file mode 100644 index 00000000..0d808ea7 --- /dev/null +++ b/Content/UI/MainMenu/S_MainMenuButton_Text_Focused.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4916f89311b394fef460258eaa356f9f53bd883a789b74b7f0581bd3a35a8aee +size 5910 diff --git a/Content/UI/MainMenu/WBP_MainMenu.uasset b/Content/UI/MainMenu/WBP_MainMenu.uasset index 79ab77b9..ec04904b 100644 --- a/Content/UI/MainMenu/WBP_MainMenu.uasset +++ b/Content/UI/MainMenu/WBP_MainMenu.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d5271e7e54b8722be1e93a27b039641fac3dddd1a16753ee920d839d789056d -size 40457 +oid sha256:c92e79ef800c887646c93f0ab26a4edb4693ee1faa6b3c071c9e27bfd3178485 +size 30143 diff --git a/Content/UI/MainMenu/WBP_MainMenuButton.uasset b/Content/UI/MainMenu/WBP_MainMenuButton.uasset new file mode 100644 index 00000000..814ceb5f --- /dev/null +++ b/Content/UI/MainMenu/WBP_MainMenuButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc91459cc9f5cfcee2fc8c99c81bdd4b329968fd2f484954ec0bd4cf188f2b7d +size 24520 diff --git a/Content/UI/Settings/WBP_GameplaySettingsTab.uasset b/Content/UI/Settings/WBP_GameplaySettingsTab.uasset index caeb7c51..453854ec 100644 --- a/Content/UI/Settings/WBP_GameplaySettingsTab.uasset +++ b/Content/UI/Settings/WBP_GameplaySettingsTab.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:620a0b956d3a20f879d751031374a661c8ffbe2d6e514a4b2e1eca1e86c0fc62 -size 32228 +oid sha256:81a81d4e47fcb8d1508e8b66eccda9b543eb6df043e08a7f44a76eaa076fdc30 +size 47583 diff --git a/Content/UI/Settings/WBP_SettingsScreen.uasset b/Content/UI/Settings/WBP_SettingsScreen.uasset index e843d168..8f5effb7 100644 --- a/Content/UI/Settings/WBP_SettingsScreen.uasset +++ b/Content/UI/Settings/WBP_SettingsScreen.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c70fb0f0bb16825c19313cce70c96e5bd8640172e4eaccb0a10ffe4527848a46 -size 42322 +oid sha256:7cdc49605826de16eac63d6f9b8082735023efcbbdc3d238e50a5be664ee3203 +size 36584 diff --git a/Content/UI/Shared/ComboBox/ComboBox.uasset b/Content/UI/Shared/ComboBox/ComboBox.uasset new file mode 100644 index 00000000..d752306c --- /dev/null +++ b/Content/UI/Shared/ComboBox/ComboBox.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34661870dbc05bdf54b80d0f44ace569259ce43b172359960730d6ce37cc5e0b +size 11581 diff --git a/Content/UI/Shared/ComboBox/ComboBox_Arrow.uasset b/Content/UI/Shared/ComboBox/ComboBox_Arrow.uasset new file mode 100644 index 00000000..5aec0725 --- /dev/null +++ b/Content/UI/Shared/ComboBox/ComboBox_Arrow.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c77a3549b9c302781a45544053a5253c5f9a066356b9924e586c0414c267e334 +size 10813 diff --git a/Content/UI/Shared/ComboBox/ComboBox_MenuBG.uasset b/Content/UI/Shared/ComboBox/ComboBox_MenuBG.uasset new file mode 100644 index 00000000..6a23c587 --- /dev/null +++ b/Content/UI/Shared/ComboBox/ComboBox_MenuBG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52cc303158bef1313ccb0e91afc91a0eeb76c14d62f1bfc52ec4c57a27ef2643 +size 12469 diff --git a/Content/UI/Shared/S_Panel.uasset b/Content/UI/Shared/S_Panel.uasset new file mode 100644 index 00000000..6a34a4db --- /dev/null +++ b/Content/UI/Shared/S_Panel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e89f1137e7a839763eaa858e603b18954730be1826c269141d48f6b74138caea +size 6697 diff --git a/Content/UI/Shared/S_TabButton.uasset b/Content/UI/Shared/S_TabButton.uasset new file mode 100644 index 00000000..e1b92590 --- /dev/null +++ b/Content/UI/Shared/S_TabButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f893aed6d08a27c59dbf2c01fbfb001ba94598852e916590f436b68be55a28e +size 7161 diff --git a/Content/UI/Shared/S_Text_TabDefault.uasset b/Content/UI/Shared/S_Text_TabDefault.uasset new file mode 100644 index 00000000..eebd1461 --- /dev/null +++ b/Content/UI/Shared/S_Text_TabDefault.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7da9e88ec5622e421798a861c791dece3e3d0439eb56e4e2797a4080b06cb5a9 +size 6224 diff --git a/Content/UI/Shared/WBP_TabButton.uasset b/Content/UI/Shared/WBP_TabButton.uasset new file mode 100644 index 00000000..28c199b1 --- /dev/null +++ b/Content/UI/Shared/WBP_TabButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2af705b0756b1dd994d80c608547d4c36c235dadad65d157c84db82a152cddf1 +size 26385 diff --git a/Source/NakedDesire/UI/Menu/MainMenuWidget.cpp b/Source/NakedDesire/UI/Menu/MainMenuWidget.cpp index 367e90d2..1fd60ca1 100644 --- a/Source/NakedDesire/UI/Menu/MainMenuWidget.cpp +++ b/Source/NakedDesire/UI/Menu/MainMenuWidget.cpp @@ -2,12 +2,11 @@ #include "MainMenuWidget.h" - #include "ConfirmModalWidget.h" -#include "Components/Button.h" #include "Kismet/GameplayStatics.h" #include "Kismet/KismetSystemLibrary.h" #include "NakedDesire/SaveGame/SaveSubsystem.h" +#include "NakedDesire/UI/TextButton.h" #include "Widgets/CommonActivatableWidgetContainer.h" #define LOCTEXT_NAMESPACE "MainMenu" @@ -29,13 +28,14 @@ void UMainMenuWidget::NativeOnActivated() if (const USaveSubsystem* SaveSubsystem = GameInstance->GetSubsystem()) bHasSave = SaveSubsystem->DoesSaveExist(); } + ContinueButton->SetIsEnabled(bHasSave); - ContinueButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OnContinueClicked); - NewGameButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OnNewGameClicked); - SettingsButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OnSettingsClicked); - CreditsButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OnCreditsClicked); - QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OnQuitClicked); + ContinueButton->OnClicked().AddUObject(this, &UMainMenuWidget::OnContinueClicked); + NewGameButton->OnClicked().AddUObject(this, &UMainMenuWidget::OnNewGameClicked); + SettingsButton->OnClicked().AddUObject(this, &UMainMenuWidget::OnSettingsClicked); + CreditsButton->OnClicked().AddUObject(this, &UMainMenuWidget::OnCreditsClicked); + QuitButton->OnClicked().AddUObject(this, &UMainMenuWidget::OnQuitClicked); } void UMainMenuWidget::OnContinueClicked() diff --git a/Source/NakedDesire/UI/Menu/MainMenuWidget.h b/Source/NakedDesire/UI/Menu/MainMenuWidget.h index 4ed0fb5d..617b50ec 100644 --- a/Source/NakedDesire/UI/Menu/MainMenuWidget.h +++ b/Source/NakedDesire/UI/Menu/MainMenuWidget.h @@ -6,6 +6,7 @@ #include "CommonActivatableWidget.h" #include "MainMenuWidget.generated.h" +class UTextButton; class UButton; class UCommonActivatableWidgetStack; class UConfirmModalWidget; @@ -26,19 +27,19 @@ protected: private: UPROPERTY(meta = (BindWidget)) - TObjectPtr ContinueButton; + TObjectPtr ContinueButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr NewGameButton; + TObjectPtr NewGameButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr SettingsButton; + TObjectPtr SettingsButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr CreditsButton; + TObjectPtr CreditsButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr QuitButton; + TObjectPtr QuitButton; // Stack the confirm popup / credits / settings screens are pushed onto. UPROPERTY(meta = (BindWidget)) diff --git a/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.cpp b/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.cpp index 88c3ede8..89fde4c0 100644 --- a/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.cpp +++ b/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.cpp @@ -2,23 +2,22 @@ #include "SettingsScreenWidget.h" - #include "AudioSettingsTab.h" #include "GameplaySettingsTab.h" #include "GraphicsSettingsTab.h" -#include "Components/Button.h" #include "Components/WidgetSwitcher.h" #include "NakedDesire/Global/NakedDesireUserSettings.h" +#include "NakedDesire/UI/TextButton.h" void USettingsScreenWidget::NativeOnActivated() { Super::NativeOnActivated(); - GameplayTabButton->OnClicked.AddUniqueDynamic(this, &USettingsScreenWidget::ShowGameplayTab); - AudioTabButton->OnClicked.AddUniqueDynamic(this, &USettingsScreenWidget::ShowAudioTab); - GraphicsTabButton->OnClicked.AddUniqueDynamic(this, &USettingsScreenWidget::ShowGraphicsTab); - ApplyButton->OnClicked.AddUniqueDynamic(this, &USettingsScreenWidget::OnApplyClicked); - BackButton->OnClicked.AddUniqueDynamic(this, &USettingsScreenWidget::OnBackClicked); + GameplayTabButton->OnClicked().AddUObject(this, &USettingsScreenWidget::ShowGameplayTab); + AudioTabButton->OnClicked().AddUObject(this, &USettingsScreenWidget::ShowAudioTab); + GraphicsTabButton->OnClicked().AddUObject(this, &USettingsScreenWidget::ShowGraphicsTab); + ApplyButton->OnClicked().AddUObject(this, &USettingsScreenWidget::OnApplyClicked); + BackButton->OnClicked().AddUObject(this, &USettingsScreenWidget::OnBackClicked); // Pull live values into every tab so the controls reflect the current state. GameplayTab->RefreshFromSettings(); @@ -39,16 +38,25 @@ void USettingsScreenWidget::NativeOnDeactivated() void USettingsScreenWidget::ShowGameplayTab() { TabSwitcher->SetActiveWidget(GameplayTab); + GameplayTabButton->SetIsActive(true); + AudioTabButton->SetIsActive(false); + GraphicsTabButton->SetIsActive(false); } void USettingsScreenWidget::ShowAudioTab() { TabSwitcher->SetActiveWidget(AudioTab); + GameplayTabButton->SetIsActive(false); + AudioTabButton->SetIsActive(true); + GraphicsTabButton->SetIsActive(false); } void USettingsScreenWidget::ShowGraphicsTab() { TabSwitcher->SetActiveWidget(GraphicsTab); + GameplayTabButton->SetIsActive(false); + AudioTabButton->SetIsActive(false); + GraphicsTabButton->SetIsActive(true); } void USettingsScreenWidget::OnApplyClicked() diff --git a/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.h b/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.h index 67ec7409..1f75eddb 100644 --- a/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.h +++ b/Source/NakedDesire/UI/Menu/Settings/SettingsScreenWidget.h @@ -6,7 +6,7 @@ #include "CommonActivatableWidget.h" #include "SettingsScreenWidget.generated.h" -class UButton; +class UTextButton; class UWidgetSwitcher; class UGameplaySettingsTab; class UAudioSettingsTab; @@ -29,19 +29,19 @@ private: TObjectPtr TabSwitcher; UPROPERTY(meta = (BindWidget)) - TObjectPtr GameplayTabButton; + TObjectPtr GameplayTabButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr AudioTabButton; + TObjectPtr AudioTabButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr GraphicsTabButton; + TObjectPtr GraphicsTabButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr ApplyButton; + TObjectPtr ApplyButton; UPROPERTY(meta = (BindWidget)) - TObjectPtr BackButton; + TObjectPtr BackButton; UPROPERTY(meta = (BindWidget)) TObjectPtr GameplayTab; diff --git a/Source/NakedDesire/UI/TextButton.cpp b/Source/NakedDesire/UI/TextButton.cpp new file mode 100644 index 00000000..14fe958e --- /dev/null +++ b/Source/NakedDesire/UI/TextButton.cpp @@ -0,0 +1,41 @@ +// © 2025 Naked People Team. All Rights Reserved. + + +#include "TextButton.h" + +#include "CommonTextBlock.h" + +void UTextButton::SetIsActive(const bool Value) +{ + IsActive = Value; + + GetSingleMaterialStyleMID()->SetScalarParameterValue(TEXT("Selected"), Value ? 1.0f : 0.0f); +} + +void UTextButton::NativePreConstruct() +{ + Super::NativePreConstruct(); + + TextBlock->SetText(Text); +} + +void UTextButton::NativeOnCurrentTextStyleChanged() +{ + Super::NativeOnCurrentTextStyleChanged(); + + TextBlock->SetStyle(GetCurrentTextStyleClass()); +} + +void UTextButton::NativeOnHovered() +{ + Super::NativeOnHovered(); + + GetSingleMaterialStyleMID()->SetScalarParameterValue(TEXT("Hovered"), 1.0f); +} + +void UTextButton::NativeOnUnhovered() +{ + Super::NativeOnUnhovered(); + + GetSingleMaterialStyleMID()->SetScalarParameterValue(TEXT("Hovered"), 0.0f); +} diff --git a/Source/NakedDesire/UI/TextButton.h b/Source/NakedDesire/UI/TextButton.h new file mode 100644 index 00000000..01e0ab30 --- /dev/null +++ b/Source/NakedDesire/UI/TextButton.h @@ -0,0 +1,33 @@ +// © 2025 Naked People Team. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "CommonButtonBase.h" +#include "TextButton.generated.h" + +class UCommonTextBlock; + +UCLASS(Abstract) +class NAKEDDESIRE_API UTextButton : public UCommonButtonBase +{ + GENERATED_BODY() + + UPROPERTY(meta = (BindWidget)) + TObjectPtr TextBlock; + + UPROPERTY(EditAnywhere, Category = "UI") + FText Text = FText::FromString(TEXT("Button")); + +public: + void SetIsActive(bool Value); + +protected: + virtual void NativePreConstruct() override; + virtual void NativeOnCurrentTextStyleChanged() override; + virtual void NativeOnHovered() override; + virtual void NativeOnUnhovered() override; + +private: + bool IsActive = false; +};