#pragma once

#include "CoreMinimal.h"
#include "FrontEndTypes.generated.h"

/**
 * Estados de topo do fluxo de front-end (MainMenu). Dirigidos pelo
 * UUIFrontEndFlowSubsystem; cada estado resolve uma tela
 * (UUIActivatableScreen_Base) via DA_FrontEndScreenSet.
 *
 * Fluxo: Boot → Connecting → Login → ServerSelect → Lobby → EnteringWorld
 * → InWorld. O Lobby é o hub principal logado; suas páginas internas são
 * EZMMOLobbyPage (não são estados de topo — ver ARQUITETURA.md §4.8).
 */
UENUM(BlueprintType)
enum class EZMMOFrontEndState : uint8
{
	None,
	Boot,			// splash inicial enquanto subsistemas sobem
	Connecting,		// conectando ao servidor Zeus (UDP)
	Login,			// autenticação
	ServerSelect,	// escolha de servidor/realm
	Lobby,			// hub principal logado (host das EZMMOLobbyPage)
	EnteringWorld,	// loading/handoff: OpenLevel do mapa de mundo
	InWorld			// no mundo (HUD de gameplay assume)
};

/**
 * Páginas internas do Lobby — navegadas por um stack CommonUI DENTRO da tela
 * de Lobby ("Switch principal"), não pelo fluxo de topo.
 */
UENUM(BlueprintType)
enum class EZMMOLobbyPage : uint8
{
	None,
	CharacterSelect,
	CharacterCreate,
	Shop,
	Settings
};
