Convert Pause Menu to use Custom Buttons

This commit is contained in:
baz 2025-08-26 01:15:27 +01:00
parent a8d6e76fbf
commit 810a833cb5
7 changed files with 20 additions and 62 deletions

Binary file not shown.

View File

@ -19,7 +19,7 @@ void UCustomButton::NativeConstruct()
ButtonBody->OnHovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered); ButtonBody->OnHovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered);
ButtonBody->OnUnhovered.AddUniqueDynamic(this, &UCustomButton::OnButtonUnhovered); ButtonBody->OnUnhovered.AddUniqueDynamic(this, &UCustomButton::OnButtonUnhovered);
TextBlock->SetText(ButtonText); SynchronizeProperties();
} }
void UCustomButton::SynchronizeProperties() void UCustomButton::SynchronizeProperties()
@ -27,6 +27,10 @@ void UCustomButton::SynchronizeProperties()
Super::SynchronizeProperties(); Super::SynchronizeProperties();
TextBlock->SetText(ButtonText); TextBlock->SetText(ButtonText);
FSlateFontInfo Font = TextBlock->GetFont();
Font.Size = TextSize;
TextBlock->SetFont(Font);
} }
TObjectPtr<UTextBlock> UCustomButton::GetTextBlock() TObjectPtr<UTextBlock> UCustomButton::GetTextBlock()

View File

@ -41,6 +41,9 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Button Settings | Text") UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Button Settings | Text")
FText ButtonText = FText::FromString("Default"); FText ButtonText = FText::FromString("Default");
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Button Settings | Text")
int TextSize = 30.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Button Settings | Color") UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Button Settings | Color")
FLinearColor ButtonHoveredTextColor = {0, 1, 0, 1}; FLinearColor ButtonHoveredTextColor = {0, 1, 0, 1};

View File

@ -4,7 +4,6 @@
#include "MainMenuWidget.h" #include "MainMenuWidget.h"
#include "CustomButton.h" #include "CustomButton.h"
#include "SelectWeaponWidget.h"
#include "Blueprint/WidgetBlueprintLibrary.h" #include "Blueprint/WidgetBlueprintLibrary.h"
#include "Components/Button.h" #include "Components/Button.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
@ -40,7 +39,7 @@ void UMainMenuWidget::NativeConstruct()
FReply UMainMenuWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) FReply UMainMenuWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
{ {
NewGameButton->SetKeyboardFocus(); NewGameButton->SetKeyboardFocus();
return Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent); return Super::NativeOnMouseButtonUp(InGeometry, InMouseEvent);
} }
@ -82,4 +81,4 @@ void UMainMenuWidget::QuitButtonOnClicked()
// This is not a bit deal for the moment as we are only building for windows // This is not a bit deal for the moment as we are only building for windows
// For some reason the generic version does not work the same as FWindowsPlatformMisc // For some reason the generic version does not work the same as FWindowsPlatformMisc
FWindowsPlatformMisc::RequestExit(false); FWindowsPlatformMisc::RequestExit(false);
} }

View File

@ -7,7 +7,6 @@
#include "MainMenuWidget.generated.h" #include "MainMenuWidget.generated.h"
class UCustomButton; class UCustomButton;
class UButton;
/** /**
* *
*/ */
@ -15,7 +14,7 @@ UCLASS()
class VAMPIRES_API UMainMenuWidget : public UUserWidget class VAMPIRES_API UMainMenuWidget : public UUserWidget
{ {
GENERATED_BODY() GENERATED_BODY()
UPROPERTY(meta = (BindWidget)) UPROPERTY(meta = (BindWidget))
TObjectPtr<UCustomButton> NewGameButton; TObjectPtr<UCustomButton> NewGameButton;

View File

@ -3,6 +3,7 @@
#include "PauseWidget.h" #include "PauseWidget.h"
#include "CustomButton.h"
#include "Blueprint/WidgetBlueprintLibrary.h" #include "Blueprint/WidgetBlueprintLibrary.h"
#include "Components/Button.h" #include "Components/Button.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
@ -15,15 +16,11 @@ void UPauseWidget::NativeConstruct()
if (ResumeButton) if (ResumeButton)
{ {
ResumeButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnClicked); ResumeButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnClicked);
ResumeButton->OnHovered.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnHovered);
ResumeButton->OnUnhovered.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnUnhovered);
} }
if (ReturnToMainMenuButton) if (ReturnToMainMenuButton)
{ {
ReturnToMainMenuButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnClicked); ReturnToMainMenuButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnClicked);
ReturnToMainMenuButton->OnHovered.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnHovered);
ReturnToMainMenuButton->OnUnhovered.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnUnhovered);
} }
SetIsFocusable(true); SetIsFocusable(true);
@ -43,19 +40,6 @@ void UPauseWidget::ResumeButtonOnClicked()
SetIsFocusable(false); SetIsFocusable(false);
} }
void UPauseWidget::ResumeButtonOnHovered()
{
SetTextBlockHovered(ResumeTextBlock);
PlayHoveredSound();
}
void UPauseWidget::ResumeButtonOnUnhovered()
{
SetTextBlockUnhovered(ResumeTextBlock);
PlayUnhoveredSound();
}
void UPauseWidget::ReturnToMainMenuButtonOnClicked() void UPauseWidget::ReturnToMainMenuButtonOnClicked()
{ {
if (UVampireGameInstance* GameInstance = Cast<UVampireGameInstance>(GetGameInstance())) if (UVampireGameInstance* GameInstance = Cast<UVampireGameInstance>(GetGameInstance()))
@ -72,16 +56,3 @@ void UPauseWidget::ReturnToMainMenuButtonOnClicked()
} }
} }
} }
void UPauseWidget::ReturnToMainMenuButtonOnHovered()
{
SetTextBlockHovered(ReturnToMainMenuTextBlock);
PlayHoveredSound();
}
void UPauseWidget::ReturnToMainMenuButtonOnUnhovered()
{
SetTextBlockUnhovered(ReturnToMainMenuTextBlock);
PlayUnhoveredSound();
}

View File

@ -7,45 +7,27 @@
#include "Blueprint/UserWidget.h" #include "Blueprint/UserWidget.h"
#include "PauseWidget.generated.h" #include "PauseWidget.generated.h"
class UButton; class UCustomButton;
/** /**
* *
*/ */
UCLASS() UCLASS()
class VAMPIRES_API UPauseWidget : public UVampireInteractiveWidget class VAMPIRES_API UPauseWidget : public UUserWidget
{ {
GENERATED_BODY() GENERATED_BODY()
UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> ResumeButton;
UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ResumeTextBlock;
UPROPERTY(meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> ReturnToMainMenuButton; TObjectPtr<UCustomButton> ResumeButton;
UPROPERTY(meta=(BindWidget)) UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ReturnToMainMenuTextBlock; TObjectPtr<UCustomButton> ReturnToMainMenuButton;
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
UFUNCTION()
void ResumeButtonOnClicked();
UFUNCTION()
void ResumeButtonOnHovered();
UFUNCTION() UFUNCTION()
void ResumeButtonOnUnhovered(); void ResumeButtonOnClicked();
UFUNCTION() UFUNCTION()
void ReturnToMainMenuButtonOnClicked(); void ReturnToMainMenuButtonOnClicked();
UFUNCTION()
void ReturnToMainMenuButtonOnHovered();
UFUNCTION()
void ReturnToMainMenuButtonOnUnhovered();
}; };