#pragma once

#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "Templates/SubclassOf.h"
#include "UI/InGameTypes.h"
#include "UIInGameScreenSet.generated.h"

class UCommonActivatableWidget;

/**
 *  Mapa data-driven estado -> tela in-game. Espelho de UUIFrontEndScreenSet
 *  (Game/UI/FrontEnd/UIFrontEndScreenSet.h) — mesma estrategia: as classes
 *  concretas das telas (WBP) vivem no DA, nao em codigo. Subsystem orquestra.
 *
 *  Asset concreto: DA_InGameScreenSet em Content/ZMMO/UI/InGame/
 *  (criado via MCP no editor).
 *
 *  Adicionar nova tela = adicionar entry em EZMMOInGameUIState + entry no DA
 *  + WBP herdando UCommonActivatableWidget. Subsystem nao muda.
 */
UCLASS(BlueprintType)
class ZMMO_API UUIInGameScreenSet : public UDataAsset
{
	GENERATED_BODY()

public:
	/** Tela por estado in-game. */
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "InGame")
	TMap<EZMMOInGameUIState, TSoftClassPtr<UCommonActivatableWidget>> StateScreens;

	/** Soft class da tela do estado (vazio se nao configurado). */
	UFUNCTION(BlueprintCallable, Category = "InGame")
	TSoftClassPtr<UCommonActivatableWidget> GetScreenForState(EZMMOInGameUIState State) const;
};
