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

View File

@ -41,6 +41,9 @@ public:
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};

View File

@ -4,7 +4,6 @@
#include "MainMenuWidget.h"
#include "CustomButton.h"
#include "SelectWeaponWidget.h"
#include "Blueprint/WidgetBlueprintLibrary.h"
#include "Components/Button.h"
#include "Kismet/GameplayStatics.h"
@ -40,7 +39,7 @@ void UMainMenuWidget::NativeConstruct()
FReply UMainMenuWidget::NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent)
{
NewGameButton->SetKeyboardFocus();
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
// For some reason the generic version does not work the same as FWindowsPlatformMisc
FWindowsPlatformMisc::RequestExit(false);
}
}

View File

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

View File

@ -3,6 +3,7 @@
#include "PauseWidget.h"
#include "CustomButton.h"
#include "Blueprint/WidgetBlueprintLibrary.h"
#include "Components/Button.h"
#include "Kismet/GameplayStatics.h"
@ -15,15 +16,11 @@ void UPauseWidget::NativeConstruct()
if (ResumeButton)
{
ResumeButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnClicked);
ResumeButton->OnHovered.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnHovered);
ResumeButton->OnUnhovered.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonOnUnhovered);
}
if (ReturnToMainMenuButton)
{
ReturnToMainMenuButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnClicked);
ReturnToMainMenuButton->OnHovered.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnHovered);
ReturnToMainMenuButton->OnUnhovered.AddUniqueDynamic(this, &UPauseWidget::ReturnToMainMenuButtonOnUnhovered);
}
SetIsFocusable(true);
@ -43,19 +40,6 @@ void UPauseWidget::ResumeButtonOnClicked()
SetIsFocusable(false);
}
void UPauseWidget::ResumeButtonOnHovered()
{
SetTextBlockHovered(ResumeTextBlock);
PlayHoveredSound();
}
void UPauseWidget::ResumeButtonOnUnhovered()
{
SetTextBlockUnhovered(ResumeTextBlock);
PlayUnhoveredSound();
}
void UPauseWidget::ReturnToMainMenuButtonOnClicked()
{
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 "PauseWidget.generated.h"
class UButton;
class UCustomButton;
/**
*
*/
UCLASS()
class VAMPIRES_API UPauseWidget : public UVampireInteractiveWidget
class VAMPIRES_API UPauseWidget : public UUserWidget
{
GENERATED_BODY()
UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> ResumeButton;
UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ResumeTextBlock;
UPROPERTY(meta=(BindWidget))
TObjectPtr<UButton> ReturnToMainMenuButton;
TObjectPtr<UCustomButton> ResumeButton;
UPROPERTY(meta=(BindWidget))
TObjectPtr<UTextBlock> ReturnToMainMenuTextBlock;
TObjectPtr<UCustomButton> ReturnToMainMenuButton;
virtual void NativeConstruct() override;
UFUNCTION()
void ResumeButtonOnClicked();
UFUNCTION()
void ResumeButtonOnHovered();
UFUNCTION()
void ResumeButtonOnUnhovered();
void ResumeButtonOnClicked();
UFUNCTION()
void ReturnToMainMenuButtonOnClicked();
UFUNCTION()
void ReturnToMainMenuButtonOnHovered();
UFUNCTION()
void ReturnToMainMenuButtonOnUnhovered();
};