#pragma once

#include "CoreMinimal.h"
#include "UIStyleTypes.generated.h"

/**
 * Enums do sistema de UI Style (tokens de tema visual).
 *
 * Espelha ThemeKeys.h: enums fortes, BlueprintType, primeiro valor None.
 * O conceito de "tema ativo" continua sendo do UZMMOThemeSubsystem
 * (resolvido por FName ThemeId). EUITheme é apenas validação tipada de
 * design-time ao preencher DT_UI_Styles — não é a chave de runtime.
 */

UENUM(BlueprintType)
enum class EUITheme : uint8
{
	None        UMETA(DisplayName = "None"),
	MMORPG 		UMETA(DisplayName = "MMORPG"),
	Survival    UMETA(DisplayName = "Survival"),
	RPG         UMETA(DisplayName = "RPG")
};

/** Posição do rótulo no UUIInput_Base. */
UENUM(BlueprintType)
enum class EUIInputLabelLayout : uint8
{
	Stacked UMETA(DisplayName = "Stacked (label acima)"),
	Inline  UMETA(DisplayName = "Inline (label à esquerda)")
};

/** Forma/silhueta de um botão — usada pelo widget para escolher dimensões. */
UENUM(BlueprintType)
enum class EUIButtonShape : uint8
{
	None         UMETA(DisplayName = "None"),
	Square       UMETA(DisplayName = "Square"),
	Rectangle    UMETA(DisplayName = "Rectangle"),
	Topbar       UMETA(DisplayName = "Topbar"),
	HeaderButton UMETA(DisplayName = "Header Button")
};

UENUM(BlueprintType)
enum class EUIPanelType : uint8
{
	None      UMETA(DisplayName = "None"),
	Primary   UMETA(DisplayName = "Primary"),
	Secondary UMETA(DisplayName = "Secondary"),
	Tertiary  UMETA(DisplayName = "Tertiary"),
	Card      UMETA(DisplayName = "Card")
};

/**
 * Conjunto de textura/silhueta do painel (espelha o enum "Panel" do Hyper).
 * Indexa os mapas de FSlateBrush em FUIStylePanel (bg + outline).
 */
UENUM(BlueprintType)
enum class EUIPanelTexture : uint8
{
	None                  UMETA(DisplayName = "None"),
	Rectangle_Horizontal_01 UMETA(DisplayName = "Rectangle Horizontal 01"),
	Rectangle_Horizontal_02 UMETA(DisplayName = "Rectangle Horizontal 02"),
	Rectangle_Horizontal_03 UMETA(DisplayName = "Rectangle Horizontal 03"),
	Rectangle_Vertical_01   UMETA(DisplayName = "Rectangle Vertical 01"),
	Rectangle_Vertical_02   UMETA(DisplayName = "Rectangle Vertical 02"),
	Rectangle_Vertical_03   UMETA(DisplayName = "Rectangle Vertical 03"),
	Rectangle_Vertical_04   UMETA(DisplayName = "Rectangle Vertical 04"),
	Rectangle_Square_01     UMETA(DisplayName = "Rectangle Square 01"),
	Rectangle_Square_Gradient_01 UMETA(DisplayName = "Rectangle Square Gradient 01"),
	Vertical_Footer_01      UMETA(DisplayName = "Vertical Footer 01")
};

UENUM(BlueprintType)
enum class EUIProgressBarType : uint8
{
	None       UMETA(DisplayName = "None"),
	Health     UMETA(DisplayName = "Health"),
	Mana       UMETA(DisplayName = "Mana"),
	Experience UMETA(DisplayName = "Experience"),
	Cast       UMETA(DisplayName = "Cast"),
	Generic    UMETA(DisplayName = "Generic")
};

/** Preset que controla Brush.DrawAs em todos os UImages da ProgressBar. */
UENUM(BlueprintType)
enum class EUIProgressBarStyle : uint8
{
	/** DrawAs=Image. Sem mascara nos cantos. */
	Box      UMETA(DisplayName = "Box"),
	/** DrawAs=RoundedBox. Cantos arredondados via Slate nativo (pixel-perfect). */
	Rounded  UMETA(DisplayName = "Rounded"),
};

UENUM(BlueprintType)
enum class EUIHeaderType : uint8
{
	None     UMETA(DisplayName = "None"),
	Section  UMETA(DisplayName = "Section"),
	Panel    UMETA(DisplayName = "Panel"),
	SubPanel UMETA(DisplayName = "Sub Panel")
};

UENUM(BlueprintType)
enum class EUIIconType : uint8
{
	None      UMETA(DisplayName = "None"),
	Inventory UMETA(DisplayName = "Inventory"),
	Equipment UMETA(DisplayName = "Equipment"),
	Skill     UMETA(DisplayName = "Skill"),
	Status    UMETA(DisplayName = "Status"),
	Currency  UMETA(DisplayName = "Currency")
};
