#pragma once

#include "CoreMinimal.h"
#include "RewardViewData.h"
#include "UObject/NoExportTypes.h"
#include "EItemRarity.h"
#include "CustomizationTooltipViewData.h"
#include "ECustomizationCategory.h"
#include "PriceTagViewData.h"
#include "EItemSourceTag.h"
#include "ECustomizationSpecialProperty.h"
#include "CustomizationRewardViewData.generated.h"

USTRUCT(BlueprintType)
struct FCustomizationRewardViewData : public FRewardViewData
{
	GENERATED_BODY()

public:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	FName CustomizationId;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	FName OutfitId;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	FDateTime ReleaseDate;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	EItemRarity Rarity;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool IsOwned;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool IsBuyable;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool IsEquipped;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool IsUnbreakable;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool IsEventItem;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	FName EventId;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	FCustomizationTooltipViewData TooltipData;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	ECustomizationCategory CustomizationCategory;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	int32 AssociatedCharacter;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool IsEnabled;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool GrantsMilestonePointOnUnlock;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	TArray<FPriceTagViewData> PriceTagData;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	EItemSourceTag ItemSourceTags;

	UPROPERTY(EditInstanceOnly, Transient)
	ECustomizationSpecialProperty SpecialPropertyFlags;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	FString InclusionVersion;

	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient)
	bool ShowLockedOverlay;

public:
	DBDUIVIEWINTERFACES_API FCustomizationRewardViewData();
};

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