From e129f2f0ccb899258a6cc292b665fa0e8df36a4c Mon Sep 17 00:00:00 2001 From: baz Date: Tue, 26 Aug 2025 13:48:31 +0100 Subject: [PATCH] Convert StarterWeaponButtonWidget to CustomButton --- .../MainMenu/BP_StarterButtonWIdget.uasset | 4 +-- Source/vampires/Widgets/CustomButton.cpp | 15 ++++---- Source/vampires/Widgets/CustomButton.h | 19 +++++----- .../Widgets/StarterWeaponButtonWidget.cpp | 35 +++---------------- .../Widgets/StarterWeaponButtonWidget.h | 23 +++--------- 5 files changed, 28 insertions(+), 68 deletions(-) diff --git a/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset b/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset index f4ad67e..18cd075 100644 --- a/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset +++ b/Content/Widgets/MainMenu/BP_StarterButtonWIdget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31099c6b90b3524ae3b7612aadc5a1168ff51f089a82ad0bf47a5fc7e85d89e1 -size 35529 +oid sha256:c3f1d3ff4bf3421f66bbcec6f33876ff5a98dc86b854f0c42fa440d99c50d5e7 +size 35930 diff --git a/Source/vampires/Widgets/CustomButton.cpp b/Source/vampires/Widgets/CustomButton.cpp index 488d887..aa24671 100644 --- a/Source/vampires/Widgets/CustomButton.cpp +++ b/Source/vampires/Widgets/CustomButton.cpp @@ -26,11 +26,14 @@ void UCustomButton::SynchronizeProperties() { Super::SynchronizeProperties(); - TextBlock->SetText(ButtonText); - - FSlateFontInfo Font = TextBlock->GetFont(); - Font.Size = TextSize; - TextBlock->SetFont(Font); + if (TextBlock) + { + TextBlock->SetText(ButtonText); + + FSlateFontInfo Font = TextBlock->GetFont(); + Font.Size = TextSize; + TextBlock->SetFont(Font); + } } TObjectPtr UCustomButton::GetTextBlock() @@ -83,7 +86,7 @@ void UCustomButton::OnButtonHovered() void UCustomButton::OnButtonUnhovered() { OnUnhovered.Broadcast(); - + if (ButtonUnhoveredSound) { UGameplayStatics::PlaySound2D(GetWorld(), ButtonUnhoveredSound); diff --git a/Source/vampires/Widgets/CustomButton.h b/Source/vampires/Widgets/CustomButton.h index d3576a8..71ed665 100644 --- a/Source/vampires/Widgets/CustomButton.h +++ b/Source/vampires/Widgets/CustomButton.h @@ -10,8 +10,11 @@ class UTextBlock; class UButton; DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonClickedEventCustom); + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonPressedEventCustom); + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonReleasedEventCustom); + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonHoverEventCustom); /** @@ -23,7 +26,6 @@ class VAMPIRES_API UCustomButton : public UUserWidget GENERATED_BODY() public: - UPROPERTY(BlueprintAssignable) FOnButtonClickedEventCustom OnClicked; @@ -38,13 +40,13 @@ public: UPROPERTY(BlueprintAssignable) FOnButtonHoverEventCustom OnUnhovered; - + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Button Settings | Text") FText ButtonText = FText::FromString("Default"); UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Button Settings | Text") int TextSize = 30.0f; - + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Button Settings | Color") FLinearColor ButtonHoveredTextColor = {0, 1, 0, 1}; @@ -59,33 +61,30 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Button Settings | Sound") TObjectPtr ButtonReleasedSound; - + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Button Settings | Sound") TObjectPtr ButtonHoveredSound; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Button Settings | Sound") TObjectPtr ButtonUnhoveredSound; -private: +protected: UPROPERTY(meta = (BindWidget)) TObjectPtr ButtonBody; UPROPERTY(meta = (BindWidget)) TObjectPtr TextBlock; -protected: - virtual void NativeConstruct() override; virtual void SynchronizeProperties() override; public: - TObjectPtr GetTextBlock(); -private: +protected: UFUNCTION() - void OnButtonClicked(); + virtual void OnButtonClicked(); UFUNCTION() void OnButtonPressed(); diff --git a/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp b/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp index ff31f01..2621e23 100644 --- a/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp +++ b/Source/vampires/Widgets/StarterWeaponButtonWidget.cpp @@ -5,42 +5,27 @@ #include "StarterWeaponButtonDataObject.h" #include "Blueprint/WidgetBlueprintLibrary.h" -#include "Components/Button.h" #include "Components/Image.h" #include "Components/TextBlock.h" #include "Kismet/GameplayStatics.h" #include "vampires/VampireGameInstance.h" -void UStarterWeaponButtonWidget::NativeConstruct() -{ - Super::NativeConstruct(); -} - void UStarterWeaponButtonWidget::NativeOnListItemObjectSet(UObject* ListItemObject) { if (UStarterWeaponButtonDataObject* Item = Cast(ListItemObject)) { - WeaponNameTextBlock->SetText(Item->WeaponName); + TextBlock->SetText(Item->WeaponName); DescriptionTextBlock->SetText(Item->WeaponDescription); WeaponIcon->SetBrushFromTexture(Item->WeaponIcon); Parent = Item->Parent; WeaponTemplate = Item->WeaponTemplate; - - if (Body) - { - Body->OnClicked.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::OnClicked); - - Body->OnHovered.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::PlayHoveredSound); - Body->OnHovered.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::OnHoveredDelegate); - - Body->OnUnhovered.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::OnUnhoveredDelegate); - Body->OnUnhovered.AddUniqueDynamic(this, &UStarterWeaponButtonWidget::PlayUnhoveredSound); - } } } -void UStarterWeaponButtonWidget::OnClicked() +void UStarterWeaponButtonWidget::OnButtonClicked() { + Super::OnButtonClicked(); + if (UVampireGameInstance* GameInstance = Cast(GetGameInstance())) { GameInstance->StarterWeapon = WeaponTemplate; @@ -58,15 +43,3 @@ void UStarterWeaponButtonWidget::OnClicked() } } } - -void UStarterWeaponButtonWidget::OnHoveredDelegate() -{ - SetTextBlockHovered(WeaponNameTextBlock); - SetTextBlockHovered(DescriptionTextBlock); -} - -void UStarterWeaponButtonWidget::OnUnhoveredDelegate() -{ - SetTextBlockUnhovered(WeaponNameTextBlock); - SetTextBlockUnhovered(DescriptionTextBlock); -} diff --git a/Source/vampires/Widgets/StarterWeaponButtonWidget.h b/Source/vampires/Widgets/StarterWeaponButtonWidget.h index 8ea2bcc..111f195 100644 --- a/Source/vampires/Widgets/StarterWeaponButtonWidget.h +++ b/Source/vampires/Widgets/StarterWeaponButtonWidget.h @@ -3,7 +3,7 @@ #pragma once #include "CoreMinimal.h" -#include "VampireInteractiveWidget.h" +#include "CustomButton.h" #include "Blueprint/IUserObjectListEntry.h" #include "Blueprint/UserWidget.h" #include "StarterWeaponButtonWidget.generated.h" @@ -11,24 +11,18 @@ class AWeapon; class UTextBlock; class UImage; -class UButton; + /** * */ UCLASS() -class VAMPIRES_API UStarterWeaponButtonWidget : public UVampireInteractiveWidget, public IUserObjectListEntry +class VAMPIRES_API UStarterWeaponButtonWidget : public UCustomButton, public IUserObjectListEntry { GENERATED_BODY() - UPROPERTY(meta=(BindWidget)) - TObjectPtr Body; - UPROPERTY(meta=(BindWidget)) TObjectPtr WeaponIcon; - UPROPERTY(meta=(BindWidget)) - TObjectPtr WeaponNameTextBlock; - UPROPERTY(meta=(BindWidget)) TObjectPtr DescriptionTextBlock; @@ -38,16 +32,7 @@ class VAMPIRES_API UStarterWeaponButtonWidget : public UVampireInteractiveWidget UPROPERTY() TObjectPtr Parent; - virtual void NativeConstruct() override; - virtual void NativeOnListItemObjectSet(UObject* ListItemObject) override; - UFUNCTION() - virtual void OnClicked(); - - UFUNCTION() - void OnHoveredDelegate(); - - UFUNCTION() - void OnUnhoveredDelegate(); + virtual void OnButtonClicked() override; };