Files
Naked-Desire/Source/NakedDesire/Commissions/Objectives/CoverageObjectiveBase.cpp
T
2026-06-01 00:27:56 +03:00

60 lines
1.8 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#include "CoverageObjectiveBase.h"
#include "NakedDesire/Clothing/ClothingManager.h"
#include "NakedDesire/Player/NakedDesireCharacter.h"
void UCoverageObjectiveBase::OnActivate()
{
Super::OnActivate(); // observer subscription
if (Player && Player->ClothingManager)
{
Player->ClothingManager->OnClothingEquip.AddUniqueDynamic(this, &UCoverageObjectiveBase::HandleClothingChanged);
Player->ClothingManager->OnClothingUnequip.AddUniqueDynamic(this, &UCoverageObjectiveBase::HandleClothingChanged);
}
}
void UCoverageObjectiveBase::OnDeactivate()
{
if (Player && Player->ClothingManager)
{
Player->ClothingManager->OnClothingEquip.RemoveDynamic(this, &UCoverageObjectiveBase::HandleClothingChanged);
Player->ClothingManager->OnClothingUnequip.RemoveDynamic(this, &UCoverageObjectiveBase::HandleClothingChanged);
}
Super::OnDeactivate(); // observer unsubscription
}
bool UCoverageObjectiveBase::IsFullyNaked() const
{
if (!Player || !Player->ClothingManager)
return false;
UClothingManager* CM = Player->ClothingManager;
return CM->GetEffectiveCoverage(EBodyPart::Boobs) <= 0.0f
&& CM->GetEffectiveCoverage(EBodyPart::Ass) <= 0.0f
&& CM->GetEffectiveCoverage(EBodyPart::Genitals) <= 0.0f;
}
bool UCoverageObjectiveBase::IsPartRevealing(EBodyPart Part) const
{
if (!Player || !Player->ClothingManager)
return false;
return Player->ClothingManager->GetEffectiveCoverage(Part) < Player->ObservationRevealThreshold;
}
bool UCoverageObjectiveBase::IsAnyPartRevealing() const
{
return IsPartRevealing(EBodyPart::Boobs)
|| IsPartRevealing(EBodyPart::Ass)
|| IsPartRevealing(EBodyPart::Genitals);
}
void UCoverageObjectiveBase::HandleClothingChanged(UClothingItemInstance* ClothingItemInstance)
{
NotifyConditionChanged();
}