Swap ListView over to ScrollBox

This commit is contained in:
baz 2025-09-02 19:55:12 +01:00
parent e7a10aa267
commit 8fba6df0db
6 changed files with 37 additions and 47 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3,11 +3,10 @@
#include "SelectWeaponWidget.h" #include "SelectWeaponWidget.h"
#include "MainMenuWidget.h" #include "CustomButton.h"
#include "StarterWeaponButtonDataObject.h" #include "StarterWeaponButtonDataObject.h"
#include "UpgradeButtonDataObject.h" #include "StarterWeaponButtonWidget.h"
#include "Components/Button.h" #include "Components/ScrollBox.h"
#include "Components/ListView.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
void USelectWeaponWidget::NativeConstruct() void USelectWeaponWidget::NativeConstruct()
@ -17,47 +16,36 @@ void USelectWeaponWidget::NativeConstruct()
if (BackButton) if (BackButton)
{ {
BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked); BackButton->OnClicked.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonClicked);
BackButton->OnHovered.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonOnHovered);
BackButton->OnUnhovered.AddUniqueDynamic(this, &USelectWeaponWidget::BackButtonOnUnhovered);
} }
if (UpgradesListView) if (StarterWeaponsScrollBox && StarterWeaponButtonWidgetTemplate)
{ {
// Get a list of weapons that the player owns that can be upgraded
for (TSubclassOf<AWeapon> Weapon : StarterWeapons) for (TSubclassOf<AWeapon> Weapon : StarterWeapons)
{
if (UStarterWeaponButtonWidget* Widget = CreateWidget<UStarterWeaponButtonWidget>(
GetWorld(), StarterWeaponButtonWidgetTemplate))
{ {
UStarterWeaponButtonDataObject* Temp = NewObject<UStarterWeaponButtonDataObject>(this); UStarterWeaponButtonDataObject* Temp = NewObject<UStarterWeaponButtonDataObject>(this);
Temp->SetData(Weapon, this); Temp->SetData(Weapon, this);
UpgradesListView->AddItem(Temp); Widget->SetData(Temp);
StarterWeaponsScrollBox->AddChild(Widget);
}
} }
} }
} }
void USelectWeaponWidget::BackButtonClicked() void USelectWeaponWidget::BackButtonClicked()
{ {
PlayClickedSound();
if (PreviousWidget) if (PreviousWidget)
{ {
RemoveFromParent(); RemoveFromParent();
UUserWidget* SelectWeaponWidget = CreateWidget<UUserWidget, APlayerController*>( UUserWidget* MainMenuWidget = CreateWidget<UUserWidget, APlayerController*>(
UGameplayStatics::GetPlayerController(GetWorld(), 0), PreviousWidget); UGameplayStatics::GetPlayerController(GetWorld(), 0), PreviousWidget);
if (SelectWeaponWidget) if (MainMenuWidget)
{ {
SelectWeaponWidget->AddToViewport(); MainMenuWidget->AddToViewport();
} }
} }
} }
void USelectWeaponWidget::BackButtonOnHovered()
{
PlayHoveredSound();
SetTextBlockHovered(BackTextBlock);
}
void USelectWeaponWidget::BackButtonOnUnhovered()
{
PlayUnhoveredSound();
SetTextBlockUnhovered(BackTextBlock);
}

View File

@ -7,9 +7,12 @@
#include "SelectWeaponWidget.generated.h" #include "SelectWeaponWidget.generated.h"
class UStarterWeaponButtonWidget;
class UScrollBox;
class UCustomListView;
class AWeapon; class AWeapon;
class UListView; class UListView;
class UButton; class UCustomButton;
/** /**
* *
*/ */
@ -18,33 +21,28 @@ class VAMPIRES_API USelectWeaponWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
public:
UPROPERTY(meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> BackButton; TObjectPtr<UCustomButton> BackButton;
UPROPERTY(meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> BackTextBlock; TObjectPtr<UScrollBox> StarterWeaponsScrollBox;
UPROPERTY(meta=(BindWidget)) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TObjectPtr<UListView> UpgradesListView; TSubclassOf<UStarterWeaponButtonWidget> StarterWeaponButtonWidgetTemplate;
protected: protected:
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly)
TArray<TSubclassOf<AWeapon>> StarterWeapons; TArray<TSubclassOf<AWeapon>> StarterWeapons;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TSubclassOf<class UUserWidget> PreviousWidget; TSubclassOf<class UUserWidget> PreviousWidget;
FTimerHandle TimerHandle;
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
private: private:
UFUNCTION() UFUNCTION()
void BackButtonClicked(); void BackButtonClicked();
UFUNCTION()
void BackButtonOnHovered();
UFUNCTION()
void BackButtonOnUnhovered();
}; };

View File

@ -10,11 +10,12 @@
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "vampires/VampireGameInstance.h" #include "vampires/VampireGameInstance.h"
void UStarterWeaponButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject) void UStarterWeaponButtonWidget::SetData(UStarterWeaponButtonDataObject* ListItemObject)
{ {
if (UStarterWeaponButtonDataObject* Item = Cast<UStarterWeaponButtonDataObject>(ListItemObject)) if (UStarterWeaponButtonDataObject* Item = Cast<UStarterWeaponButtonDataObject>(ListItemObject))
{ {
TextBlock->SetText(Item->WeaponName); TextBlock->SetText(Item->WeaponName);
ButtonText = Item->WeaponName;
DescriptionTextBlock->SetText(Item->WeaponDescription); DescriptionTextBlock->SetText(Item->WeaponDescription);
WeaponIcon->SetBrushFromTexture(Item->WeaponIcon); WeaponIcon->SetBrushFromTexture(Item->WeaponIcon);
Parent = Item->Parent; Parent = Item->Parent;

View File

@ -8,6 +8,7 @@
#include "Blueprint/UserWidget.h" #include "Blueprint/UserWidget.h"
#include "StarterWeaponButtonWidget.generated.h" #include "StarterWeaponButtonWidget.generated.h"
class UStarterWeaponButtonDataObject;
class AWeapon; class AWeapon;
class UTextBlock; class UTextBlock;
class UImage; class UImage;
@ -32,7 +33,9 @@ class VAMPIRES_API UStarterWeaponButtonWidget : public UCustomButton, public IUs
UPROPERTY() UPROPERTY()
TObjectPtr<UUserWidget> Parent; TObjectPtr<UUserWidget> Parent;
virtual void NativeOnListItemObjectSet(UObject* ListItemObject) override; public:
void SetData(UStarterWeaponButtonDataObject* ListItemObject);
private:
virtual void OnButtonClicked() override; virtual void OnButtonClicked() override;
}; };