Updated DialogueNPC to Disable Character Movement

This commit is contained in:
Philip W 2023-02-02 02:39:35 +00:00
parent 3433254463
commit 5c5b915225

View File

@ -4,6 +4,7 @@
#include "DialogueNPC.h" #include "DialogueNPC.h"
#include "Blueprint/UserWidget.h" #include "Blueprint/UserWidget.h"
#include "Components/TextBlock.h" #include "Components/TextBlock.h"
#include "GameFramework/Character.h"
// Sets default values for this component's properties // Sets default values for this component's properties
UDialogueNPC::UDialogueNPC() UDialogueNPC::UDialogueNPC()
@ -57,7 +58,7 @@ void UDialogueNPC::NextDialogue()
void UDialogueNPC::NextCharacter() void UDialogueNPC::NextCharacter()
{ {
if (DialogueIndex >= Dialogue.Num()) return; if (DialogueIndex >= Dialogue.Num()) return;
if (CurrentDialogue.Len() < Dialogue[DialogueIndex].Len()) if (CurrentDialogue.Len() < Dialogue[DialogueIndex].Len())
{ {
CurrentDialogue.AppendChar(Dialogue[DialogueIndex][CurrentDialogue.Len()]); CurrentDialogue.AppendChar(Dialogue[DialogueIndex][CurrentDialogue.Len()]);
@ -75,11 +76,16 @@ void UDialogueNPC::TickComponent(float DeltaTime, ELevelTick TickType, FActorCom
void UDialogueNPC::StartDialogue() void UDialogueNPC::StartDialogue()
{ {
//Disable Character Movement
if (ACharacter* PlayerCharacter = Cast<ACharacter>(GetWorld()->GetFirstPlayerController()->GetPawn()))
{
PlayerCharacter->DisableInput(GetWorld()->GetFirstPlayerController());
}
//Set to UI Mode Only //Set to UI Mode Only
APlayerController* PlayerController = GetWorld()->GetFirstPlayerController(); APlayerController* PlayerController = GetWorld()->GetFirstPlayerController();
PlayerController->SetInputMode(FInputModeUIOnly()); PlayerController->SetInputMode(FInputModeUIOnly());
PlayerController->bShowMouseCursor = true; PlayerController->bShowMouseCursor = true;
DialogueWidgetInstance->AddToViewport(); DialogueWidgetInstance->AddToViewport();
DialogueIndex = 0; DialogueIndex = 0;
NPCNameText->SetText(FText::FromString(NPCName)); NPCNameText->SetText(FText::FromString(NPCName));
@ -92,6 +98,11 @@ void UDialogueNPC::EndDialogue()
TextAnimationTimerHandle.Invalidate(); TextAnimationTimerHandle.Invalidate();
DialogueWidgetInstance->RemoveFromParent(); DialogueWidgetInstance->RemoveFromParent();
//Enable Character Movement
if (ACharacter* PlayerCharacter = Cast<ACharacter>(GetWorld()->GetFirstPlayerController()->GetPawn()))
{
PlayerCharacter->EnableInput(GetWorld()->GetFirstPlayerController());
}
//Reset UI Mode //Reset UI Mode
APlayerController* PlayerController = GetWorld()->GetFirstPlayerController(); APlayerController* PlayerController = GetWorld()->GetFirstPlayerController();
PlayerController->SetInputMode(FInputModeGameOnly()); PlayerController->SetInputMode(FInputModeGameOnly());