diff --git a/Content/Widgets/Pause/BP_PauseWidget.uasset b/Content/Widgets/Pause/BP_PauseWidget.uasset index 2aa9f04..de84645 100644 --- a/Content/Widgets/Pause/BP_PauseWidget.uasset +++ b/Content/Widgets/Pause/BP_PauseWidget.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdc31e3199707e9e7c611bc51f92556c3d445d97929a9caed3f8f158ea4b6f97 -size 30954 +oid sha256:7733661d266dda9dd1b58014f1b979ff6db1fde793dec6361cb67482ce8717d6 +size 37046 diff --git a/Source/vampires/Widgets/PauseWidget.cpp b/Source/vampires/Widgets/PauseWidget.cpp index dbc397c..80a176b 100644 --- a/Source/vampires/Widgets/PauseWidget.cpp +++ b/Source/vampires/Widgets/PauseWidget.cpp @@ -6,10 +6,7 @@ #include "Blueprint/WidgetBlueprintLibrary.h" #include "Components/Button.h" #include "Kismet/GameplayStatics.h" - -void UPauseWidget::Init() -{ -} +#include "vampires/VampireGameInstance.h" void UPauseWidget::NativeConstruct() { @@ -17,13 +14,22 @@ void UPauseWidget::NativeConstruct() 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); } -void UPauseWidget::ResumeButtonClicked() +void UPauseWidget::ResumeButtonOnClicked() { RemoveFromParent(); @@ -36,3 +42,46 @@ void UPauseWidget::ResumeButtonClicked() SetIsFocusable(false); } + + +void UPauseWidget::ResumeButtonOnHovered() +{ + SetTextBlockHovered(ResumeTextBlock); + PlayHoveredSound(); +} + +void UPauseWidget::ResumeButtonOnUnhovered() +{ + SetTextBlockUnhovered(ResumeTextBlock); + PlayUnhoveredSound(); +} + +void UPauseWidget::ReturnToMainMenuButtonOnClicked() +{ + if (UVampireGameInstance* GameInstance = Cast(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(); +} + diff --git a/Source/vampires/Widgets/PauseWidget.h b/Source/vampires/Widgets/PauseWidget.h index 61484a3..2e2b8b5 100644 --- a/Source/vampires/Widgets/PauseWidget.h +++ b/Source/vampires/Widgets/PauseWidget.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "VampireInteractiveWidget.h" #include "Blueprint/UserWidget.h" #include "PauseWidget.generated.h" @@ -11,19 +12,42 @@ class UButton; * */ UCLASS() -class VAMPIRES_API UPauseWidget : public UUserWidget +class VAMPIRES_API UPauseWidget : public UVampireInteractiveWidget { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) - UButton* ResumeButton; + TObjectPtr ResumeButton; + + UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) + TObjectPtr ResumeTextBlock; - void Init(); + UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) + TObjectPtr ReturnToMainMenuButton; + + UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) + TObjectPtr ReturnToMainMenuTextBlock; virtual void NativeConstruct() override; private: UFUNCTION() - void ResumeButtonClicked(); + void ResumeButtonOnClicked(); + + UFUNCTION() + void ResumeButtonOnHovered(); + + UFUNCTION() + void ResumeButtonOnUnhovered(); + + UFUNCTION() + void ReturnToMainMenuButtonOnClicked(); + + UFUNCTION() + void ReturnToMainMenuButtonOnHovered(); + + UFUNCTION() + void ReturnToMainMenuButtonOnUnhovered(); + };