// © 2025 Naked People Team. All Rights Reserved.

#include "MinTimeGoal.h"

#define LOCTEXT_NAMESPACE "Missions.Goals.MinTime"
const FText GoalsMinTimeDescription = LOCTEXT("Description", "Do following at least {MinTime} seconds");
#undef LOCTEXT_NAMESPACE


FText UMinTimeGoal::GetDescription() const
{
	return FText::Format(GoalsMinTimeDescription,
		FFormatNamedArguments
		{
			{TEXT("MinTime"), MinTime}
		});
}

void UMinTimeGoal::OnRestrictionUpdated(UGoalRestriction* Restriction)
{
	Super::OnRestrictionUpdated(Restriction);

	if (CheckRestrictions())
	{
		if (!TimerHandle.IsValid())
		{
			GetWorld()->GetTimerManager().SetTimer(TimerHandle, this, &UMinTimeGoal::TimeIsUp, MinTime, false);
		}
	}
	else
	{
		if (TimerHandle.IsValid())
		{
			GetWorld()->GetTimerManager().ClearTimer(TimerHandle);
		}
	}
}

void UMinTimeGoal::TimeIsUp()
{
	Complete();
}
