Added commision objectives

This commit is contained in:
2026-06-01 15:03:37 +03:00
parent 003d9992e2
commit f63c98d5d7
25 changed files with 626 additions and 82 deletions
@@ -0,0 +1,39 @@
// © 2025 Naked People Team. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "NakedDesire/Commissions/CommissionObjective.h"
#include "MoveDistanceFromClothingObjective.generated.h"
class UDroppedClothingSubsystem;
// §13.4 MoveDistanceFromClothing(meters): reach RequiredMeters of separation from the nearest clothing
// you left on the ground (UDroppedClothingSubsystem). Distance has no event, so the objective polls.
// Never auto-satisfies when nothing has been dropped — there is nothing to move away from.
//
// ReachLocationAwayFromClothing(tag, meters) needs no new class: author this objective with a
// ULocationConstraint, and the base ANDs the location gate into the satisfaction check.
UCLASS(EditInlineNew, DisplayName = "Move Distance From Clothing")
class NAKEDDESIRE_API UMoveDistanceFromClothingObjective : public UCommissionObjective
{
GENERATED_BODY()
public:
virtual FText GetDescription() const override;
virtual float GetProgress() const override;
protected:
virtual void OnActivate() override;
virtual void OnDeactivate() override;
virtual bool IsConditionMet() const override;
private:
void Poll();
UDroppedClothingSubsystem* GetDroppedClothing() const;
UPROPERTY(EditDefaultsOnly, meta = (ClampMin = 1))
float RequiredMeters = 50.0f;
FTimerHandle PollTimer;
};