#pragma once

#include "CoreMinimal.h"
#include "PrestigeData.h"
#include "ECharacterDifficulty.h"
#include "PurchaseCurrencyData.h"
#include "SpecialEventUIInfo.h"
#include "EDisabledItemOption.h"
#include "EPlayerRole.h"
#include "CharacterSlotData.generated.h"

USTRUCT(BlueprintType)
struct FCharacterSlotData
{
	GENERATED_BODY()

public:
	UPROPERTY(BlueprintReadWrite, Transient)
	FName Id;

	UPROPERTY(BlueprintReadWrite, Transient)
	int32 CharacterIndex;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString IconFilePath;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString BackgroundImagePath;

	UPROPERTY(BlueprintReadWrite, Transient)
	FText DisplayName;

	UPROPERTY(BlueprintReadWrite, Transient)
	FText Backstory;

	UPROPERTY(BlueprintReadWrite, Transient)
	FText Biography;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString DLCId;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString DLCTitle;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString PackId;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString PackTitle;

	UPROPERTY(BlueprintReadWrite, Transient)
	int32 Level;

	UPROPERTY(BlueprintReadWrite, Transient)
	FPrestigeData PrestigeData;

	UPROPERTY(BlueprintReadWrite, Transient)
	ECharacterDifficulty Difficulty;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString DifficultyName;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsUnlocked;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsDLCPurchasable;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsDLCValid;

	UPROPERTY(BlueprintReadWrite, Transient)
	TArray<FPurchaseCurrencyData> PurchaseDataList;

	UPROPERTY(BlueprintReadWrite, Transient)
	int32 ItemsOwned;

	UPROPERTY(BlueprintReadWrite, Transient)
	int32 TotalItems;

	UPROPERTY(BlueprintReadWrite, Transient)
	int32 NewItemsCount;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool ShowNew;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsDlcLockedKiller;

	UPROPERTY(BlueprintReadWrite, Transient)
	FSpecialEventUIInfo EventInfo;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool IsEnabled;

	UPROPERTY(BlueprintReadWrite, Transient)
	EDisabledItemOption DisabledItemOption;

	UPROPERTY(BlueprintReadWrite, Transient)
	bool HasNonSelectedPerks;

	UPROPERTY(BlueprintReadWrite, Transient)
	EPlayerRole PlayerRole;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString RemainingTimeItem;

	UPROPERTY(BlueprintReadWrite, Transient)
	FString RemainingTimeDiscount;

	UPROPERTY(BlueprintReadWrite, Transient)
	int32 NumChars;

public:
	DEADBYDAYLIGHT_API FCharacterSlotData();
};

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