#pragma once

#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "StatusEffectRow.generated.h"

class UTexture2D;
class UNiagaraSystem;

UENUM(BlueprintType)
enum class EStatusEffectKind : uint8
{
	Buff        UMETA(DisplayName = "Buff"),
	Debuff      UMETA(DisplayName = "Debuff"),
	DoT         UMETA(DisplayName = "Damage Over Time"),
	HoT         UMETA(DisplayName = "Heal Over Time"),
	Crowd       UMETA(DisplayName = "Crowd Control")
};

USTRUCT(BlueprintType)
struct ZMMO_API FStatusEffectRow : public FTableRowBase
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status")
	FText DisplayName;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status", meta = (MultiLine = true))
	FText Description;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status")
	EStatusEffectKind Kind = EStatusEffectKind::Buff;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status")
	float Duration = 5.f;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status")
	float TickInterval = 1.f;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status")
	int32 TickValue = 0;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Status")
	int32 MaxStacks = 1;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Visuals")
	TSoftObjectPtr<UTexture2D> Icon;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Visuals")
	TSoftObjectPtr<UNiagaraSystem> AttachedVFX;
};
