Get Select Weapon Menu mostly working

This commit is contained in:
baz 2025-09-02 22:31:31 +01:00
parent 1fea57b459
commit 1625c0012e
5 changed files with 42 additions and 3 deletions

Binary file not shown.

View File

@ -6,7 +6,6 @@
#include "CustomButton.h" #include "CustomButton.h"
#include "StarterWeaponButtonDataObject.h" #include "StarterWeaponButtonDataObject.h"
#include "StarterWeaponButtonWidget.h" #include "StarterWeaponButtonWidget.h"
#include "Components/Button.h"
#include "Components/ScrollBox.h" #include "Components/ScrollBox.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
@ -17,6 +16,7 @@ void USelectWeaponWidget::NativeConstruct()
if (BackButton) if (BackButton)
{ {
BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked); BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked);
BackButton->OnFocused.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonFocused);
} }
if (StarterWeaponsScrollBox && StarterWeaponButtonWidgetTemplate) 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() void USelectWeaponWidget::BackButtonClicked()
{ {
if (PreviousWidget) if (PreviousWidget)
@ -56,3 +63,8 @@ void USelectWeaponWidget::BackButtonClicked()
} }
} }
} }
void USelectWeaponWidget::BackButtonFocused(FFocusEvent InFocusEvent)
{
SetCurrentFocus(BackButton);
}

View File

@ -42,9 +42,14 @@ protected:
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
virtual FReply NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
private: private:
UFUNCTION() UFUNCTION()
void BackButtonClicked(); void BackButtonClicked();
UFUNCTION()
void BackButtonFocused(FFocusEvent InFocusEvent);
TArray<TObjectPtr<UStarterWeaponButtonWidget>> Buttons; TArray<TObjectPtr<UStarterWeaponButtonWidget>> Buttons;
}; };

View File

@ -3,6 +3,7 @@
#include "StarterWeaponButtonWidget.h" #include "StarterWeaponButtonWidget.h"
#include "SelectWeaponWidget.h"
#include "StarterWeaponButtonDataObject.h" #include "StarterWeaponButtonDataObject.h"
#include "Blueprint/WidgetBlueprintLibrary.h" #include "Blueprint/WidgetBlueprintLibrary.h"
#include "Components/Image.h" #include "Components/Image.h"
@ -10,6 +11,13 @@
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "vampires/VampireGameInstance.h" #include "vampires/VampireGameInstance.h"
void UStarterWeaponButtonWidget::NativeConstruct()
{
Super::NativeConstruct();
OnFocused.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::SetFocusInParent);
}
void UStarterWeaponButtonWidget::SetData(UStarterWeaponButtonDataObject* ListItemObject) void UStarterWeaponButtonWidget::SetData(UStarterWeaponButtonDataObject* ListItemObject)
{ {
if (UStarterWeaponButtonDataObject* Item = Cast<UStarterWeaponButtonDataObject>(ListItemObject)) if (UStarterWeaponButtonDataObject* Item = Cast<UStarterWeaponButtonDataObject>(ListItemObject))
@ -44,3 +52,11 @@ void UStarterWeaponButtonWidget::OnButtonClicked()
} }
} }
} }
void UStarterWeaponButtonWidget::SetFocusInParent(FFocusEvent InFocusEvent)
{
if (USelectWeaponWidget* StarterMenu = Cast<USelectWeaponWidget>(Parent))
{
StarterMenu->SetCurrentFocus(this);
}
}

View File

@ -33,9 +33,15 @@ class VAMPIRES_API UStarterWeaponButtonWidget : public UCustomButton, public IUs
UPROPERTY() UPROPERTY()
TObjectPtr<UUserWidget> Parent; TObjectPtr<UUserWidget> Parent;
protected:
virtual void NativeConstruct() override;
public: public:
void SetData(UStarterWeaponButtonDataObject* ListItemObject); void SetData(UStarterWeaponButtonDataObject* ListItemObject);
private: private:
virtual void OnButtonClicked() override; virtual void OnButtonClicked() override;
UFUNCTION()
void SetFocusInParent(FFocusEvent InFocusEvent);
}; };