#pragma once

#include "CoreMinimal.h"
#include "InGameTypes.generated.h"

/**
 *  Estados da UI in-game. Dirigidos pelo UUIInGameFlowSubsystem; cada estado
 *  resolve uma tela (UCommonActivatableWidget) via DA_InGameScreenSet.
 *
 *  Espelha simetricamente EZMMOFrontEndState (Data/UI/FrontEndTypes.h):
 *   - Front-end usa estados pra Login/ServerSelect/Lobby (UI.Layer.Menu)
 *   - In-game usa estados pra HUD/Status/Inventory/Skills (UI.Layer.Game + GameMenu)
 *
 *  Convencao de camadas (resolvida pelo subsystem):
 *   - Playing                       -> UI.Layer.Game     (HUD principal)
 *   - StatusWindow / Inventory /
 *     SkillTree / EscapeMenu        -> UI.Layer.GameMenu (sobreposicoes)
 *   - Loading                       -> UI.Layer.Modal    (overlay critico)
 *
 *  `Playing` e' o estado base — quando in-game, sempre ha um HUD no
 *  Layer.Game. Abrir Status/Inventory NAO substitui o HUD; empilha em
 *  Layer.GameMenu por cima dele.
 */
UENUM(BlueprintType)
enum class EZMMOInGameUIState : uint8
{
	None,           ///< Antes do player local spawnar; UI in-game inativa.
	Playing,        ///< HUD principal visivel (HP/SP/level/etc).
	StatusWindow,   ///< Janela de atributos + botões de alocacao (Fase 4).
	JobChangePanel, ///< Painel de promocao de classe (Jobs.1). Toggle tecla J.
	Inventory,      ///< (futuro) Bag/equipamentos.
	SkillTree,      ///< (futuro) Arvore de skills.
	EscapeMenu,     ///< (futuro) Pausa, settings, logout.
	Loading         ///< Overlay de loading generico (transitorio).
};
