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


#include "BareRegionObjective.h"

#include "NakedDesire/Clothing/BodyPart.h"

#define LOCTEXT_NAMESPACE "Commissions.Objectives.BareRegion"

bool UBareRegionObjective::IsConditionMet() const
{
	switch (Region)
	{
	case EBareRegion::Top:
		// Chest bare, both lower regions still covered.
		return IsPartRevealing(EBodyPart::Boobs)
			&& !IsPartRevealing(EBodyPart::Genitals)
			&& !IsPartRevealing(EBodyPart::Ass);

	case EBareRegion::Bottom:
		// Lower half bare, chest still covered.
		return IsPartRevealing(EBodyPart::Genitals)
			&& IsPartRevealing(EBodyPart::Ass)
			&& !IsPartRevealing(EBodyPart::Boobs);

	default:
		return false;
	}
}

FText UBareRegionObjective::GetDescription() const
{
	const bool bTimed = RequiredHoldSeconds > 0.0f;

	if (Region == EBareRegion::Top)
	{
		return bTimed
			? FText::Format(LOCTEXT("TopTimed", "Stay topless — chest bare, below covered — for {0} seconds"),
				FText::AsNumber(FMath::RoundToInt(RequiredHoldSeconds)))
			: LOCTEXT("TopInstant", "Go topless — bare your chest while staying covered below");
	}

	return bTimed
		? FText::Format(LOCTEXT("BottomTimed", "Stay bottomless — bare below, chest covered — for {0} seconds"),
			FText::AsNumber(FMath::RoundToInt(RequiredHoldSeconds)))
		: LOCTEXT("BottomInstant", "Go bottomless — bare below while keeping your chest covered");
}

#undef LOCTEXT_NAMESPACE