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

#pragma once

#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "GoalRestriction.generated.h"

class ANakedDesireCharacter;
class UGoalRestriction;

DECLARE_MULTICAST_DELEGATE_OneParam(FMissionRestrictionUpdateSignature, UGoalRestriction*);

/**
 * 
 */
UCLASS(EditInlineNew, BlueprintType)
class NAKEDDESIRE_API UGoalRestriction : public UObject
{
	GENERATED_BODY()

public:
	FMissionRestrictionUpdateSignature OnUpdate;

	UFUNCTION(BlueprintPure)
	bool GetIsSuccess() const
	{
		return IsSuccess;
	}
	
	virtual void Init(ANakedDesireCharacter* PlayerCharacter);
	virtual void Complete();
	virtual void Complete(bool Value);
	virtual void Stop() {};

	UFUNCTION(BlueprintPure)
	virtual FText GetDescription() const;

protected:
	UPROPERTY()
	ANakedDesireCharacter* Player = nullptr;

	bool IsSuccess = false;
};
