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

48 lines
1.4 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#include "ReachEmbarrassmentObjective.h"
#include "NakedDesire/Player/NakedDesireCharacter.h"
#include "NakedDesire/Stats/StatsManager.h"
#define LOCTEXT_NAMESPACE "Commissions.Objectives.ReachEmbarrassment"
void UReachEmbarrassmentObjective::OnActivate()
{
if (Player && Player->StatsManager)
Player->StatsManager->EmbarrassmentUpdate.AddDynamic(this, &UReachEmbarrassmentObjective::HandleEmbarrassmentUpdate);
}
void UReachEmbarrassmentObjective::OnDeactivate()
{
if (Player && Player->StatsManager)
Player->StatsManager->EmbarrassmentUpdate.RemoveDynamic(this, &UReachEmbarrassmentObjective::HandleEmbarrassmentUpdate);
}
bool UReachEmbarrassmentObjective::IsConditionMet() const
{
return CachedMax > 0.0f && CachedCurrent >= ThresholdFraction * CachedMax;
}
void UReachEmbarrassmentObjective::HandleEmbarrassmentUpdate(float CurrentValue, float MaxValue)
{
CachedCurrent = CurrentValue;
CachedMax = MaxValue;
NotifyConditionChanged();
}
FText UReachEmbarrassmentObjective::GetDescription() const
{
const FText Percent = FText::AsNumber(FMath::RoundToInt(ThresholdFraction * 100.0f));
if (RequiredHoldSeconds > 0.0f)
{
return FText::Format(LOCTEXT("Timed", "Keep embarrassment above {0}% for {1} seconds"),
Percent, FText::AsNumber(FMath::RoundToInt(RequiredHoldSeconds)));
}
return FText::Format(LOCTEXT("Instant", "Push your embarrassment past {0}%"), Percent);
}
#undef LOCTEXT_NAMESPACE