From 1625c0012e54a35edcd9aa287920d0aa31a2d565 Mon Sep 17 00:00:00 2001 From: baz Date: Tue, 2 Sep 2025 22:31:31 +0100 Subject: [PATCH] Get Select Weapon Menu mostly working --- .../MainMenu/BP_SelectWeaponWidget.uasset | 4 ++-- Source/vampires/Widgets/SelectWeaponWidget.cpp | 14 +++++++++++++- Source/vampires/Widgets/SelectWeaponWidget.h | 5 +++++ .../Widgets/StarterWeaponButtonWidget.cpp | 16 ++++++++++++++++ .../vampires/Widgets/StarterWeaponButtonWidget.h | 6 ++++++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset b/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset index b75d62a..1219612 100644 --- a/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset +++ b/Content/Widgets/MainMenu/BP_SelectWeaponWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e8c5cbff759c8154be9c72f0702d6968e63b953c77d56b73333f4f47627a3c4 -size 36728 +oid sha256:34aec7e871c8b02d628adc6246c95086638e48c92e351fd927f6da8a36b03bc9 +size 38529 diff --git a/Source/vampires/Widgets/SelectWeaponWidget.cpp b/Source/vampires/Widgets/SelectWeaponWidget.cpp index a1319bf..a2dcc9e 100644 --- a/Source/vampires/Widgets/SelectWeaponWidget.cpp +++ b/Source/vampires/Widgets/SelectWeaponWidget.cpp @@ -6,7 +6,6 @@ #include "CustomButton.h" #include "StarterWeaponButtonDataObject.h" #include "StarterWeaponButtonWidget.h" -#include "Components/Button.h" #include "Components/ScrollBox.h" #include "Kismet/GameplayStatics.h" @@ -17,6 +16,7 @@ void USelectWeaponWidget::NativeConstruct() if (BackButton) { BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked); + BackButton->OnFocused.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonFocused); } if (StarterWeaponsScrollBox && StarterWeaponButtonWidgetTemplate) @@ -41,6 +41,13 @@ void USelectWeaponWidget::NativeConstruct() } } +FReply USelectWeaponWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) +{ + CurrentFocus->SetKeyboardFocus(); + + return Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent); +} + void USelectWeaponWidget::BackButtonClicked() { if (PreviousWidget) @@ -56,3 +63,8 @@ void USelectWeaponWidget::BackButtonClicked() } } } + +void USelectWeaponWidget::BackButtonFocused(FFocusEvent InFocusEvent) +{ + SetCurrentFocus(BackButton); +} diff --git a/Source/vampires/Widgets/SelectWeaponWidget.h b/Source/vampires/Widgets/SelectWeaponWidget.h index 204ba9c..8703684 100644 --- a/Source/vampires/Widgets/SelectWeaponWidget.h +++ b/Source/vampires/Widgets/SelectWeaponWidget.h @@ -42,9 +42,14 @@ protected: virtual void NativeConstruct() override; + virtual FReply NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override; + private: UFUNCTION() void BackButtonClicked(); + UFUNCTION() + void BackButtonFocused(FFocusEvent InFocusEvent); + TArray> Buttons; }; diff --git a/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp b/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp index 64c89ce..95a5a22 100644 --- a/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp +++ b/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp @@ -3,6 +3,7 @@ #include "StarterWeaponButtonWidget.h" +#include "SelectWeaponWidget.h" #include "StarterWeaponButtonDataObject.h" #include "Blueprint/WidgetBlueprintLibrary.h" #include "Components/Image.h" @@ -10,6 +11,13 @@ #include "Kismet/GameplayStatics.h" #include "vampires/VampireGameInstance.h" +void UStarterWeaponButtonWidget::NativeConstruct() +{ + Super::NativeConstruct(); + + OnFocused.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::SetFocusInParent); +} + void UStarterWeaponButtonWidget::SetData(UStarterWeaponButtonDataObject* ListItemObject) { if (UStarterWeaponButtonDataObject* Item = Cast(ListItemObject)) @@ -44,3 +52,11 @@ void UStarterWeaponButtonWidget::OnButtonClicked() } } } + +void UStarterWeaponButtonWidget::SetFocusInParent(FFocusEvent InFocusEvent) +{ + if (USelectWeaponWidget* StarterMenu = Cast(Parent)) + { + StarterMenu->SetCurrentFocus(this); + } +} diff --git a/Source/vampires/Widgets/StarterWeaponButtonWidget.h b/Source/vampires/Widgets/StarterWeaponButtonWidget.h index a9abeba..e3cb59b 100644 --- a/Source/vampires/Widgets/StarterWeaponButtonWidget.h +++ b/Source/vampires/Widgets/StarterWeaponButtonWidget.h @@ -33,9 +33,15 @@ class VAMPIRES_API UStarterWeaponButtonWidget : public UCustomButton, public IUs UPROPERTY() TObjectPtr Parent; +protected: + virtual void NativeConstruct() override; + public: void SetData(UStarterWeaponButtonDataObject* ListItemObject); private: virtual void OnButtonClicked() override; + + UFUNCTION() + void SetFocusInParent(FFocusEvent InFocusEvent); };