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 "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);
}

View File

@ -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<TObjectPtr<UStarterWeaponButtonWidget>> Buttons;
};

View File

@ -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<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()
TObjectPtr<UUserWidget> Parent;
protected:
virtual void NativeConstruct() override;
public:
void SetData(UStarterWeaponButtonDataObject* ListItemObject);
private:
virtual void OnButtonClicked() override;
UFUNCTION()
void SetFocusInParent(FFocusEvent InFocusEvent);
};