From bb6ad4b9f7777ba0b294e81855d84bb0b62e9636 Mon Sep 17 00:00:00 2001 From: baz Date: Thu, 7 Aug 2025 00:55:09 +0100 Subject: [PATCH] Make options menu accessable from Main Menu --- .../Widgets/MainMenu/BP_MainMenuWidget.uasset | 4 +-- Source/vampires/Widgets/MainMenuWidget.cpp | 28 +++++++++++++++ Source/vampires/Widgets/MainMenuWidget.h | 36 ++++++++++++------- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/Content/Widgets/MainMenu/BP_MainMenuWidget.uasset b/Content/Widgets/MainMenu/BP_MainMenuWidget.uasset index 646deca..e28ea30 100644 --- a/Content/Widgets/MainMenu/BP_MainMenuWidget.uasset +++ b/Content/Widgets/MainMenu/BP_MainMenuWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1f25ae329e9bde235d93f4f04e5b090208773c74f48a2a37f5a9457cf9ca5f9 -size 36167 +oid sha256:a059f60b1ef50c6b9c1c8295674aec3c7efffb93f479b632c3f0516bd582ebbe +size 40728 diff --git a/Source/vampires/Widgets/MainMenuWidget.cpp b/Source/vampires/Widgets/MainMenuWidget.cpp index 56ce77c..ba92f6c 100644 --- a/Source/vampires/Widgets/MainMenuWidget.cpp +++ b/Source/vampires/Widgets/MainMenuWidget.cpp @@ -24,6 +24,18 @@ void UMainMenuWidget::NativeConstruct() NewGameButton->OnUnhovered.AddUniqueDynamic(this, &UMainMenuWidget::PlayUnhoveredSound); } + 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); + } + if (QuitButton) { QuitButton->OnClicked.AddUniqueDynamic(this, &UMainMenuWidget::QuitButtonOnClicked); @@ -61,6 +73,22 @@ void UMainMenuWidget::NewGameButtonOnClicked() } } +void UMainMenuWidget::OptionsButtonOnClicked() +{ + if (OptionsMenuWidget) + { + RemoveFromParent(); + + UUserWidget* OptionWeaponWidget = CreateWidget( + UGameplayStatics::GetPlayerController(GetWorld(), 0), OptionsMenuWidget); + + if (OptionWeaponWidget) + { + OptionWeaponWidget->AddToViewport(); + } + } +} + void UMainMenuWidget::QuitButtonOnClicked() { // TODO: Add platform specific Exit requests diff --git a/Source/vampires/Widgets/MainMenuWidget.h b/Source/vampires/Widgets/MainMenuWidget.h index 2d5d73e..443778b 100644 --- a/Source/vampires/Widgets/MainMenuWidget.h +++ b/Source/vampires/Widgets/MainMenuWidget.h @@ -15,30 +15,33 @@ class VAMPIRES_API UMainMenuWidget : public UVampireInteractiveWidget { GENERATED_BODY() - // TODO: Add options menu - protected: - UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) + UPROPERTY(meta = (BindWidget)) TObjectPtr NewGameButton; - UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) + UPROPERTY(meta = (BindWidget)) TObjectPtr NewGameTextBlock; - UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) + UPROPERTY(meta = (BindWidget)) + TObjectPtr OptionsButton; + + UPROPERTY(meta = (BindWidget)) + TObjectPtr OptionsTextBlock; + + UPROPERTY(meta = (BindWidget)) TObjectPtr QuitButton; - UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) + UPROPERTY(meta = (BindWidget)) TObjectPtr QuitTextBlock; - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Widget Settings | New Game") - TSubclassOf NewGameMenuWidget; + UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | New Game") + TSubclassOf NewGameMenuWidget; - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Widget Settings | New Game") + UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | New Game") TSoftObjectPtr NewGameLevel; -private: - UPROPERTY() - TObjectPtr CurrentNewGameWidget; + UPROPERTY(EditDefaultsOnly, Category = "Widget Settings | Options") + TSubclassOf OptionsMenuWidget; public: virtual void NativeConstruct() override; @@ -47,6 +50,9 @@ private: UFUNCTION() void NewGameButtonOnClicked(); + UFUNCTION() + void OptionsButtonOnClicked(); + UFUNCTION() void QuitButtonOnClicked(); @@ -56,6 +62,12 @@ private: UFUNCTION() void NewGameTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(NewGameTextBlock); } + UFUNCTION() + void OptionsTextBlockHoveredDelegate() { SetTextBlockHovered(OptionsTextBlock); } + + UFUNCTION() + void OptionsTextBlockUnhoveredDelegate() { SetTextBlockUnhovered(OptionsTextBlock); } + UFUNCTION() void QuitTextBlockHoveredDelegate() { SetTextBlockHovered(QuitTextBlock); }