From d572a9b1773e73302b5d11867d3892b803310d1d Mon Sep 17 00:00:00 2001 From: baz Date: Fri, 15 Aug 2025 22:24:26 +0100 Subject: [PATCH] Reduce number of bindings --- Content/Levels/MainMenu/MainMenu.umap | 4 +- Source/vampires/Widgets/MainMenuWidget.cpp | 69 +++++++++++++++------- Source/vampires/Widgets/MainMenuWidget.h | 15 +++-- 3 files changed, 57 insertions(+), 31 deletions(-) diff --git a/Content/Levels/MainMenu/MainMenu.umap b/Content/Levels/MainMenu/MainMenu.umap index 3ba65b3..a1a548d 100644 --- a/Content/Levels/MainMenu/MainMenu.umap +++ b/Content/Levels/MainMenu/MainMenu.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d9fac3727e6cf999ba78aa0c847a5e8967fce2ab1173092bffe79d4fde653a6 -size 39751 +oid sha256:f21dfcd7746b81d5b250a1d014c6b9911e50b337eb80955b24e6618da8142beb +size 49092 diff --git a/Source/vampires/Widgets/MainMenuWidget.cpp b/Source/vampires/Widgets/MainMenuWidget.cpp index ba92f6c..eb82a4b 100644 --- a/Source/vampires/Widgets/MainMenuWidget.cpp +++ b/Source/vampires/Widgets/MainMenuWidget.cpp @@ -15,37 +15,22 @@ void UMainMenuWidget::NativeConstruct() if (NewGameButton) { NewGameButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::NewGameButtonOnClicked); - NewGameButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::PlayClickedSound); - - NewGameButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayHoveredSound); - NewGameButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::NewGameTextBlockHoveredDelegate); - - NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::NewGameTextBlockUnhoveredDelegate); - NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); + NewGameButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::NewGameButtonOnHovered); + NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::NewGameButtonOnUnhovered); } if (OptionsButton) { OptionsButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::OptionsButtonOnClicked); - OptionsButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::PlayClickedSound); - - OptionsButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayHoveredSound); - OptionsButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::OptionsTextBlockHoveredDelegate); - - OptionsButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::OptionsTextBlockUnhoveredDelegate); - OptionsButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); + OptionsButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::OptionsButtonOnHovered); + OptionsButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::OptionsButtonOnUnhovered); } if (QuitButton) { QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnClicked); - QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::PlayClickedSound); - - QuitButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayHoveredSound); - QuitButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::QuitTextBlockHoveredDelegate); - - QuitButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::QuitTextBlockUnhoveredDelegate); - QuitButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); + QuitButton->OnHovered.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnHovered); + QuitButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnUnhovered); } QuitButton->SetIsEnabled(false); @@ -59,6 +44,8 @@ void UMainMenuWidget::NativeConstruct() void UMainMenuWidget::NewGameButtonOnClicked() { + PlayClickedSound(); + if (NewGameMenuWidget) { RemoveFromParent(); @@ -75,6 +62,8 @@ void UMainMenuWidget::NewGameButtonOnClicked() void UMainMenuWidget::OptionsButtonOnClicked() { + PlayClickedSound(); + if (OptionsMenuWidget) { RemoveFromParent(); @@ -91,8 +80,46 @@ void UMainMenuWidget::OptionsButtonOnClicked() void UMainMenuWidget::QuitButtonOnClicked() { + PlayClickedSound(); + // TODO: Add platform specific Exit requests // This is not a bit deal for the moment as we are only building for windows // For some reason the generic version does not work the same as FWindowsPlatformMisc FWindowsPlatformMisc::RequestExit(false); } + +void UMainMenuWidget::NewGameButtonOnHovered() +{ + PlayHoveredSound(); + SetTextBlockHovered(NewGameTextBlock); +} + +void UMainMenuWidget::NewGameButtonOnUnhovered() +{ + PlayUnhoveredSound(); + SetTextBlockUnhovered(NewGameTextBlock); +} + +void UMainMenuWidget::OptionsButtonOnHovered() +{ + PlayHoveredSound(); + SetTextBlockHovered(OptionsTextBlock); +} + +void UMainMenuWidget::OptionsButtonOnUnhovered() +{ + PlayUnhoveredSound(); + SetTextBlockUnhovered(OptionsTextBlock); +} + +void UMainMenuWidget::QuitButtonOnHovered() +{ + PlayHoveredSound(); + SetTextBlockHovered(QuitTextBlock); +} + +void UMainMenuWidget::QuitButtonOnUnhovered() +{ + PlayUnhoveredSound(); + SetTextBlockUnhovered(QuitTextBlock); +} diff --git a/Source/vampires/Widgets/MainMenuWidget.h b/Source/vampires/Widgets/MainMenuWidget.h index 443778b..2084eed 100644 --- a/Source/vampires/Widgets/MainMenuWidget.h +++ b/Source/vampires/Widgets/MainMenuWidget.h @@ -14,8 +14,7 @@ UCLASS() class VAMPIRES_API UMainMenuWidget : public UVampireInteractiveWidget { GENERATED_BODY() - -protected: + UPROPERTY(meta = (BindWidget)) TObjectPtr NewGameButton; @@ -57,20 +56,20 @@ private: void QuitButtonOnClicked(); UFUNCTION() - void NewGameTextBlockHoveredDelegate() { SetTextBlockHovered(NewGameTextBlock); } + void NewGameButtonOnHovered(); UFUNCTION() - void NewGameTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(NewGameTextBlock); } + void NewGameButtonOnUnhovered(); UFUNCTION() - void OptionsTextBlockHoveredDelegate() { SetTextBlockHovered(OptionsTextBlock); } + void OptionsButtonOnHovered(); UFUNCTION() - void OptionsTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(OptionsTextBlock); } + void OptionsButtonOnUnhovered(); UFUNCTION() - void QuitTextBlockHoveredDelegate() { SetTextBlockHovered(QuitTextBlock); } + void QuitButtonOnHovered(); UFUNCTION() - void QuitTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(QuitTextBlock); } + void QuitButtonOnUnhovered(); };