diff --git a/Content/Player/BP_PlayerController.uasset b/Content/Player/BP_PlayerController.uasset index 7e87d3c..3b73be9 100644 --- a/Content/Player/BP_PlayerController.uasset +++ b/Content/Player/BP_PlayerController.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a9fbb07f6538d67c5f48d821ef04d27e953477319b435e7fc411691269ba8ec -size 20980 +oid sha256:532ddb4c9d878af52996537d87231f76368042664fb6aaf15c8f0d410c1c81a9 +size 21173 diff --git a/Content/Widgets/Pause/BP_PauseWidget.uasset b/Content/Widgets/Pause/BP_PauseWidget.uasset new file mode 100644 index 0000000..2aa9f04 --- /dev/null +++ b/Content/Widgets/Pause/BP_PauseWidget.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdc31e3199707e9e7c611bc51f92556c3d445d97929a9caed3f8f158ea4b6f97 +size 30954 diff --git a/Source/vampires/VampirePlayerController.cpp b/Source/vampires/VampirePlayerController.cpp index 4234e9f..bbee7e8 100644 --- a/Source/vampires/VampirePlayerController.cpp +++ b/Source/vampires/VampirePlayerController.cpp @@ -9,8 +9,10 @@ #include "Inputable.h" #include "VampireGameMode.h" #include "Blueprint/UserWidget.h" +#include "Blueprint/WidgetBlueprintLibrary.h" #include "Kismet/GameplayStatics.h" #include "Widgets/HUDWidget.h" +#include "Widgets/PauseWidget.h" void AVampirePlayerController::OnPossess(APawn* aPawn) { @@ -94,7 +96,16 @@ void AVampirePlayerController::OnPause(const FInputActionValue& PauseInput) if (SetPause(true)) { - //TODO: Add pause screen + if (PauseUI) + { + currentPauseUI = CreateWidget(this, PauseUI.Get()); + if (currentPauseUI) + { + currentPauseUI->AddToViewport(); + UWidgetBlueprintLibrary::SetInputMode_UIOnlyEx(this, currentPauseUI, EMouseLockMode::LockInFullscreen); + bShowMouseCursor = true; + } + } } } diff --git a/Source/vampires/VampirePlayerController.h b/Source/vampires/VampirePlayerController.h index 170db0e..43bb4a7 100644 --- a/Source/vampires/VampirePlayerController.h +++ b/Source/vampires/VampirePlayerController.h @@ -6,6 +6,7 @@ #include "GameFramework/PlayerController.h" #include "VampirePlayerController.generated.h" +class UPauseWidget; struct FInputActionValue; class UInputAction; class UHUDWidget; @@ -18,10 +19,13 @@ class VAMPIRES_API AVampirePlayerController : public APlayerController GENERATED_BODY() public: - + // UI UPROPERTY(EditAnywhere, BlueprintReadWrite) TSubclassOf PlayerHUD = nullptr; + UPROPERTY(EditAnywhere, BlueprintReadWrite) + TSubclassOf PauseUI = nullptr; + // Inputs UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UInputAction* MovementAction; @@ -33,6 +37,8 @@ private: TObjectPtr currentPlayerHUD = nullptr; + TObjectPtr currentPauseUI = nullptr; + FTimerHandle pawnLifeTimeHandle; protected: diff --git a/Source/vampires/Widgets/PauseWidget.cpp b/Source/vampires/Widgets/PauseWidget.cpp new file mode 100644 index 0000000..c4a98cb --- /dev/null +++ b/Source/vampires/Widgets/PauseWidget.cpp @@ -0,0 +1,40 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "PauseWidget.h" + +#include "Blueprint/WidgetBlueprintLibrary.h" +#include "Components/Button.h" +#include "Kismet/GameplayStatics.h" + +void UPauseWidget::Init() +{ +} + +void UPauseWidget::NativeConstruct() +{ + Super::NativeConstruct(); + + if (ResumeButton) + { + ResumeButton->OnClicked.AddUniqueDynamic(this, &UPauseWidget::ResumeButtonClicked); + } + + SetIsFocusable(true); +} + +void UPauseWidget::ResumeButtonClicked() +{ + //TODO: Implementation + + RemoveFromParent(); + + if (APlayerController* playerController = UGameplayStatics::GetPlayerController(GetWorld(), 0)) + { + UWidgetBlueprintLibrary::SetInputMode_GameOnly(playerController); + playerController->bShowMouseCursor = false; + playerController->SetPause(false); + } + + SetIsFocusable(false); +} diff --git a/Source/vampires/Widgets/PauseWidget.h b/Source/vampires/Widgets/PauseWidget.h new file mode 100644 index 0000000..69a49aa --- /dev/null +++ b/Source/vampires/Widgets/PauseWidget.h @@ -0,0 +1,31 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "PauseWidget.generated.h" + +class UButton; +/** + * + */ +UCLASS() +class VAMPIRES_API UPauseWidget : public UUserWidget +{ + GENERATED_BODY() + +public: + + UPROPERTY(BlueprintReadWrite, meta=(BindWidget)) + UButton* ResumeButton; + + void Init(); + + virtual void NativeConstruct() override; + +private: + + UFUNCTION() + void ResumeButtonClicked(); +};