#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "UObject/SoftObjectPtr.h"
#include "TimerFlagViewData.h"
#include "SoftRemoteContentCacheObjectPtr.h"
#include "PriceTagViewData.h"
#include "StoreChapterPackViewData.generated.h"

class UTexture2D;
class UStoreCharacterItemViewData;
class UStoreCustomizationItemViewData;
class UStorePackContentData;

UCLASS(Blueprintable)
class DBDUIVIEWINTERFACES_API UStoreChapterPackViewData : public UObject
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FString Id;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FString OriginalDlcId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FText DisplayTitle;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FString HeritagePackId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FText FullDescription;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	TSoftObjectPtr<UTexture2D> PackImage;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	TArray<UStoreCharacterItemViewData*> CharactersData;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	TArray<UStoreCustomizationItemViewData*> CustomizationsData;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	TArray<UStorePackContentData*> SortedContent;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	int32 SortOrder;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	bool IsNew;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	bool IsOwned;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	bool IsIndividuallyAvailable;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FDateTime ActivationStartDate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FDateTime ActivationEndDate;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FTimerFlagViewData TimerViewData;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FSoftRemoteContentCacheObjectPtr PackImagePtr;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
	FPriceTagViewData PriceTagData;

public:
	UStoreChapterPackViewData();
};

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