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

#pragma once

#include "CoreMinimal.h"
#include "NakedDesire/Clothing/ClothingSlotType.h"
#include "NakedDesire/Commissions/CommissionConstraint.h"
#include "WearingSlotConstraint.generated.h"

class UClothingItemInstance;

// Holds while the chosen slot is occupied (bMustBeWorn) or empty (!bMustBeWorn). Covers both
// "while wearing a coat" (Outerwear occupied) and "while not wearing a top" (Top empty).
UCLASS(EditInlineNew, DisplayName = "While Wearing / Not Wearing Slot")
class NAKEDDESIRE_API UWearingSlotConstraint : public UCommissionConstraint
{
	GENERATED_BODY()

public:
	virtual bool IsMet() const override;
	virtual FText GetDescription() const override;

protected:
	virtual void OnActivate() override;
	virtual void OnDeactivate() override;

private:
	UPROPERTY(EditDefaultsOnly)
	EClothingSlotType Slot = EClothingSlotType::Outerwear;

	UPROPERTY(EditDefaultsOnly)
	bool bMustBeWorn = true;

	UFUNCTION()
	void HandleClothingChanged(UClothingItemInstance* ClothingItemInstance);
};