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


#include "LocationRestriction.h"
#include "NakedDesire/Locations/LocationData.h"
#include "NakedDesire/Player/NakedDesireCharacter.h"

#define LOCTEXT_NAMESPACE "Missions.Restrictions.Location"
const FText RestrictionsLocationDescription = LOCTEXT("Description", "Visit {LocationName}");
#undef LOCTEXT_NAMESPACE

void ULocationRestriction::Init(ANakedDesireCharacter* PlayerCharacter)
{
	Super::Init(PlayerCharacter);

	// AreaEnterHandle = PlayerCharacter->OnAreaEnter.AddUObject(this, &ULocationRestriction::OnAreaEnter);
	// AreaExitHandle = PlayerCharacter->OnAreaExit.AddUObject(this, &ULocationRestriction::OnAreaExit);
}

void ULocationRestriction::Stop()
{
	Super::Stop();

	// Player->OnAreaEnter.Remove(AreaEnterHandle);
	// Player->OnAreaExit.Remove(AreaExitHandle);
}

FText ULocationRestriction::GetDescription() const
{
	return FText::Format(RestrictionsLocationDescription,
		FFormatNamedArguments
		{
			{TEXT("LocationName"), TargetLocation->Name}
		}); 
}

void ULocationRestriction::OnAreaEnter(ULocationData* LocationData)
{
	if (!IsSuccess && LocationData->Tag.MatchesTag(TargetLocation->Tag))
	{
		Complete();
	}
}

void ULocationRestriction::OnAreaExit(ULocationData* LocationData)
{
	if (IsSuccess && LocationData->Tag.MatchesTag(TargetLocation->Tag))
	{
		Init(Player);
	}
}
