Make Pause Widget a VampireInteractiveWidget

This commit is contained in:
baz 2025-08-15 22:11:34 +01:00
parent 544b238739
commit 82ce0896d0
3 changed files with 85 additions and 12 deletions

Binary file not shown.

View File

@ -6,10 +6,7 @@
#include "Blueprint/WidgetBlueprintLibrary.h" #include "Blueprint/WidgetBlueprintLibrary.h"
#include "Components/Button.h" #include "Components/Button.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "vampires/VampireGameInstance.h"
void UPauseWidget::Init()
{
}
void UPauseWidget::NativeConstruct() void UPauseWidget::NativeConstruct()
{ {
@ -17,13 +14,22 @@ void UPauseWidget::NativeConstruct()
if (ResumeButton) if (ResumeButton)
{ {
ResumeButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonClicked); 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); SetIsFocusable(true);
} }
void UPauseWidget::ResumeButtonClicked() void UPauseWidget::ResumeButtonOnClicked()
{ {
RemoveFromParent(); RemoveFromParent();
@ -36,3 +42,46 @@ void UPauseWidget::ResumeButtonClicked()
SetIsFocusable(false); SetIsFocusable(false);
} }
void UPauseWidget::ResumeButtonOnHovered()
{
SetTextBlockHovered(ResumeTextBlock);
PlayHoveredSound();
}
void UPauseWidget::ResumeButtonOnUnhovered()
{
SetTextBlockUnhovered(ResumeTextBlock);
PlayUnhoveredSound();
}
void UPauseWidget::ReturnToMainMenuButtonOnClicked()
{
if (UVampireGameInstance* GameInstance = Cast<UVampireGameInstance>(GetGameInstance()))
{
if (!GameInstance->MainMenuWorld.IsNull())
{
UGameplayStatics::OpenLevelBySoftObjectPtr(GetWorld(), GameInstance->MainMenuWorld);
if (APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0))
{
PlayerController->bShowMouseCursor = true;
}
SetIsFocusable(true);
}
}
}
void UPauseWidget::ReturnToMainMenuButtonOnHovered()
{
SetTextBlockHovered(ReturnToMainMenuTextBlock);
PlayHoveredSound();
}
void UPauseWidget::ReturnToMainMenuButtonOnUnhovered()
{
SetTextBlockUnhovered(ReturnToMainMenuTextBlock);
PlayUnhoveredSound();
}

View File

@ -3,6 +3,7 @@
#pragma once #pragma once
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "VampireInteractiveWidget.h"
#include "Blueprint/UserWidget.h" #include "Blueprint/UserWidget.h"
#include "PauseWidget.generated.h" #include "PauseWidget.generated.h"
@ -11,19 +12,42 @@ class UButton;
* *
*/ */
UCLASS() UCLASS()
class VAMPIRES_API UPauseWidget : public UUserWidget class VAMPIRES_API UPauseWidget : public UVampireInteractiveWidget
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
UButton* ResumeButton; TObjectPtr<UButton> ResumeButton;
void Init(); UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
TObjectPtr<UTextBlock> ResumeTextBlock;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
TObjectPtr<UButton> ReturnToMainMenuButton;
UPROPERTY(BlueprintReadWrite, meta=(BindWidget))
TObjectPtr<UTextBlock> ReturnToMainMenuTextBlock;
virtual void NativeConstruct() override; virtual void NativeConstruct() override;
private: private:
UFUNCTION() UFUNCTION()
void ResumeButtonClicked(); void ResumeButtonOnClicked();
UFUNCTION()
void ResumeButtonOnHovered();
UFUNCTION()
void ResumeButtonOnUnhovered();
UFUNCTION()
void ReturnToMainMenuButtonOnClicked();
UFUNCTION()
void ReturnToMainMenuButtonOnHovered();
UFUNCTION()
void ReturnToMainMenuButtonOnUnhovered();
}; };