Added a function which can be called from blueprints to re-enable all input once a button is pressed Fixed interaction boolean to reset itself back to false to make it so player can talk to NPC again without having to restart the game to interact with it.
64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
// Fill out your copyright notice in the Description page of Project Settings.
|
|
|
|
|
|
#include "Interaction.h"
|
|
|
|
#include "Chaos/BoundingVolumeUtilities.h"
|
|
#include "Components/WidgetComponent.h"
|
|
|
|
|
|
|
|
// Sets default values
|
|
AInteraction::AInteraction()
|
|
{
|
|
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
|
|
PrimaryActorTick.bCanEverTick = true;
|
|
}
|
|
|
|
// Called when the game starts or when spawned
|
|
void AInteraction::BeginPlay()
|
|
{
|
|
Super::BeginPlay();
|
|
|
|
}
|
|
|
|
// Called every frame
|
|
void AInteraction::Tick(float DeltaTime)
|
|
{
|
|
Super::Tick(DeltaTime);
|
|
|
|
}
|
|
|
|
void AInteraction::OnInteract()
|
|
{
|
|
ShopDialogWidget = CreateWidget<UUserWidget>(GetWorld(), ShopDialog);
|
|
if (ShopDialogWidget == nullptr)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ShopDialogWidget->AddToViewport(0);
|
|
}
|
|
//handles the widget disappearing from the viewport
|
|
FTimerHandle WidgetTimer;
|
|
GetWorldTimerManager().SetTimer(WidgetTimer, this, &AInteraction::RemoveWidget, WaitTimer, false);
|
|
|
|
}
|
|
|
|
void AInteraction::RemoveWidget()
|
|
{
|
|
bisDisabled = true;
|
|
ShopDialogWidget->RemoveFromViewport();
|
|
UE_LOG(LogTemp, Display, TEXT("setting isDisabled to true"));
|
|
ItemSelectorWidget = CreateWidget<UUserWidget>(GetWorld(), ItemSelector);
|
|
if (ItemSelectorWidget == nullptr)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
ItemSelectorWidget->AddToViewport(0);
|
|
bisDisabled = false;
|
|
}
|
|
} |