#pragma once

#include "CoreMinimal.h"
#include "GameFramework/HUD.h"
#include "ZMMOHUD.generated.h"

/**
 *  HUD do MMO. Pattern UE5 idiomatico: o GameMode atribui `HUDClass`, o
 *  engine cria 1 instancia por PlayerController automaticamente.
 *
 *  Responsabilidade unica: orquestrar o lifecycle da UI in-game. Em
 *  BeginPlay, pede ao `UUIInGameFlowSubsystem` pra entrar em `Playing`
 *  (que pushea WBP_HUD em UI.Layer.Game). Em EndPlay/destrucao, o flow
 *  subsystem cuida do cleanup.
 *
 *  Separacao de responsabilidades:
 *   - AZMMOPlayerCharacter (Pawn) — movimento, input, AttributeComponent
 *   - AZMMOPlayerController       — input mapping, mouse
 *   - AZMMOHUD                    — UI lifecycle
 *   - AZMMOGameMode               — wires tudo via class slots
 *
 *  NAO desenha nada via canvas (AHUD::DrawHUD). UI inteira vive em UMG +
 *  CommonUI (UI.Layer.Game / GameMenu / Modal).
 */
UCLASS()
class ZMMO_API AZMMOHUD : public AHUD
{
	GENERATED_BODY()

public:
	AZMMOHUD();

protected:
	virtual void BeginPlay() override;
	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
};
