#pragma once

#include "CoreMinimal.h"
#include "ChallengeObjectiveData.h"
#include "RewardResponseItem.h"
#include "EPlayerRole.h"
#include "ChallengeData.generated.h"

USTRUCT(BlueprintType)
struct FChallengeData
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 ChallengeOrder;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString TitleStringId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool TitleStringId_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString Title;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool Title_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString DescriptionStringId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool DescriptionStringId_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString Description;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool Description_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 LifetimeInDays;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool LifetimeInDays_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TMap<FString, FChallengeObjectiveData> Objectives;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 RewardPoints;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool RewardPoints_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FRewardResponseItem> Rewards;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool Rewards_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString Type;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString StartDate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString EndDate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool EndDate_IsSet;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EPlayerRole RoleType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, SkipSerialization)
	bool RoleType_IsSet;

public:
	DEADBYDAYLIGHT_API FChallengeData();
};

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