#pragma once

#include "CoreMinimal.h"
#include "SpecialBehaviourItem.h"
#include "ChallengeConditionItem.h"
#include "QuestEventItem.h"
#include "EArchiveNodeType.h"
#include "EChallengeType.h"
#include "QuestItem.generated.h"

USTRUCT(BlueprintType)
struct FQuestItem
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString ClientObjectiveId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString ClientObjectiveInfo;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 MaxProgressionPerPlayer;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 NeededProgression;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSet<int32> NeededProgressions;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FSpecialBehaviourItem SpecialBehaviour;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FChallengeConditionItem> Conditions;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FQuestEventItem QuestEvent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EArchiveNodeType QuestType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EChallengeType Type;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsCommunityObjective;

public:
	DEADBYDAYLIGHT_API FQuestItem();
};

FORCEINLINE uint32 GetTypeHash(const FQuestItem) { return 0; }
