#pragma once

#include "CoreMinimal.h"
#include "UObject/SoftObjectPtr.h"
#include "EItemRarity.h"
#include "EItemSourceTag.h"
#include "EEnergyTypeEnum.h"
#include "EProgressValueDisplayColor.h"
#include "EInputInteractionType.h"
#include "EInteractionPromptType.h"
#include "EInventoryType.h"
#include "InventorySlotData.h"
#include "InputCoreTypes.h"
#include "EquippedItemData.generated.h"

class UTexture2D;

USTRUCT(BlueprintType)
struct FEquippedItemData
{
	GENERATED_BODY()

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FName ItemId;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	uint8 IconPathIndex;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString IconPath;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TSoftObjectPtr<UTexture2D> Icon;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EItemRarity Rarity;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EItemSourceTag ItemSourceTags;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EEnergyTypeEnum EnergyType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EProgressValueDisplayColor ProgressValueDisplayColor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float EnergyLevel;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float ProgressValue;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float Cooldown;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float SecondaryCooldown;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString InputPromptType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString InputPromptKey;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EInputInteractionType InteractionInputType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EInteractionPromptType InteractionPromptType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsRechargeable;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 Count;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool ShowKeyPrompt;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsCountDisplayForced;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsBeingCollected;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsLimitedItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsFakeItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsSpecialItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsCursedItem;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool IsAvailable;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EInventoryType InventoryType;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FInventorySlotData Addon1;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FInventorySlotData Addon2;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FKey InputKey;

public:
	DEADBYDAYLIGHT_API FEquippedItemData();
};

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