- UI_Input_Master refatorado: SizeBox -> Overlay -> Background/Stroke (UImage)
+ EditableTextBox. Cor magenta default eliminada — UImages atrás
pintam o visual via DT_UI_Styles.
- UI_Label_Master novo: wrapper "label + input" com 2 slots de UI_Input_Master
(Stacked/Inline). Reaproveita o input puro como composição reutilizável.
- UILabel_Base/UIInput_Base (C++): hierarquia limpa, propagação de Variant/
HintText/FontSize/PreferredWidth/Height/bIsPassword pai->filho com
passthrough em 0/vazio (override só quando setado).
- FUIStyleInput*: campos avulsos (BackgroundColor/Texture/DrawAs/Margin)
trocados por FSlateBrush completo — DT expõe agora Image, ImageSize,
Matiz, Desenhar como, Ladrilhos, Margin, UV no Designer.
- 11 texturas Hyper copiadas (T_Bar_Gradient_Background_Long + 10 borders)
e referenciadas em DT_UI_Styles row Default (Backgrounds + Strokes das 4
variantes Box/Outline/Underline/Search).
- ZMMOThemeSubsystem.Initialize: força chamada de ResolveActiveUIStyle
mesmo quando ActiveTheme não muda — evita ActiveUIStyle ficar vazio
quando DefaultThemeAsset é nullptr (sintoma: Brushes não renderizavam
em PIE/runtime).
- "Lembrar Acesso": UZMMOLoginSaveGame nova (USaveGame com SavedUsername
+ bRememberAccess), load assíncrono em NativeOnActivated, save/delete
em HandleLoginClicked. Slot "LoginCache" em Saved/SaveGames/. Padrão
alinhado com jogos comerciais — nunca persiste senha (CWE-256);
refresh token + DPAPI virão quando auth real entrar.
- WBP_Login: Input_User/Password agora são UI_Label_Master_C; checkbox
Lembrar bindada por nome (RememberAccess -> UUICheckBox_Base*).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Primeira tela concreta do front-end, cópia fiel do WBP_BootScreen gerado
pelo Zeus UMG Forge, adaptada aos componentes do projeto:
- UUIBootScreen_Base : UUIActivatableScreen_Base — observa o
UZeusCharServerSubsystem; libera "Iniciar" no OnConnected; clique →
UUIFrontEndFlowSubsystem::RequestEnterLogin → estado Login.
- UUISpinner_Base (componente compartilhado temável) + FUIStyleSpinner.
- FUIStyle.ScreenBackground (brush data-driven); fundo via DT_UI_Styles
(T_Boot_Background em UI/Themes/Default/Boot), sem hard-ref no WBP (§5).
- ThemeKeys: Boot_Background/Logo/Music.
- Correção do Flow: pré-login agora conecta no UZeusCharServerSubsystem
(WebSocket 7100), não mais no UDP do world server (que fica só p/
EnteringWorld/InWorld); RequestEnterLogin() adicionado.
- WBP_Boot duplicado fiel + reparent UUIBootScreen_Base; swap manual no
Designer (Btn_Start/Spinner_Connect/Text_Status); slots de layout
(Container_Root/Stage/Content) ajustados p/ preencher/centralizar.
- WBP_PrimaryGameLayout: Stack_Modal corrigido p/ Fill/Fill.
- DA_FrontEndScreenSet: StateScreens[Boot] = WBP_Boot.
- ARQUITETURA.md (§2.1/§2.2/§4.8 + nota CharServer).
Validado em PIE: tela centralizada, fundo, conexão ao ZeusCharServer e
liberação do botão. Crash do plugin tratado em commit separado do server.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Realoca as 13 texturas de painel do Hyper p/ /Game/ZMMO/UI/CommonUI/Textures/Panels/ (remove as procedurais)
- DT_UI_Styles.PanelBackground com as 9 entradas fiéis ao Hyper Survival_Gold (DrawAs=Image, Margin 0, tint por chave); PanelOutline vazio como no Hyper
- FUIPanelBrushSet (espelha Struct_UI_Style_Panels): só os 2 mapas
- UUIPanel_Base expõe Panels EditAnywhere (Details como no Hyper), semeado do tema; modo-textura só SetBrush (sem padding/visibility inventados)
- Design-time carrega DT_UI_Styles direto (Designer pinta igual ao runtime)
- Fix: outline ausente usa NoDrawType (antes pintava centro branco com FSlateBrush default)
- Remove membro morto Content/UNamedSlot (Hyper não usa NamedSlot)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Estrutura principal de front-end estilo Lyra portada para C++ proprio do
ZMMO (sem CommonGame), seguindo o padrao C++ Abstract -> WBP concreto:
- EZMMOFrontEndState / EZMMOLobbyPage e GameplayTags UI.Layer.* nativos
- UUIActivatableScreen_Base: base de tela (input config, hook de tema,
voltar) espelhando o padrao de UUIButton_Base
- UUIPrimaryGameLayout_Base: switch principal (4 stacks CommonUI/camada)
- UUIManagerSubsystem (LocalPlayer): dono do root layout, idempotente
- UUIFrontEndFlowSubsystem (GameInstance): maquina de estados + driver
de rede (Boot->Connecting->Login->ServerSelect->Lobby->EnteringWorld
->InWorld); Lobby e o hub logado, paginas internas = EZMMOLobbyPage
- UUIFrontEndScreenSet (DataAsset): mapa estado->tela, forge-ready
- AZMMOFrontEndGameMode + AZMMOFrontEndPlayerController
- GameInstance: bAutoConnectOnStart=false (conexao dirigida pelo fluxo)
- Build.cs: +GameplayTags; ARQUITETURA.md PR-first (s2.1/2.2/3.3/4.8/5)
- Assets: L_FrontEnd (GameMode via World Settings), WBP_PrimaryGameLayout,
DA_FrontEndScreenSet; Config wiring
WBPs de pagina (Boot/Login/...) virao do Zeus UMG Forge depois (s4.8).
Smoke test PIE OK: root layout no viewport, fluxo Boot->Connecting,
no-op+log para telas nao configuradas, sem crash.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4 UTexture2D procedurais (grunge: base escura + value-noise 2 oitavas + vinheta + manchas + moldura arcana) em Content/ZMMO/UI/CommonUI/Textures/Panels (Square/Horizontal/Vertical + Outline_Gold; sRGB, UI, no-mip). DT_UI_Styles linha Default: Style.Panel.PanelBackground/PanelOutline com FSlateBrush (DrawAs Box/9-slice, Margin 0.22) -> ResourceObject resolvido p/ as texturas (verificado via read_data_table). UI_Panel_Master tree = Background(Border)->Outline(Border) (identico ao Hyper, sem NamedSlot). UI_Test_Panel: PanelA/B/Wide com PanelTexture (Square/Horizontal/Vertical_01). Play L_Test_UI mostra paineis texturizados (modo textura usa FUIStyle do subsystem em runtime).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Border do painel encolhia (NamedSlot vazio + slot Overlay nao-Fill). Agora cada SizeBox tem o UI_Panel_Master como filho unico -> SizeBox forca 360x200 / 740x160 -> Background preenche a celula e mostra o tema. Botoes (Confirmar/Cancelar Danger/Fechar Ghost) em BtnRow separada. Limite MCP: slot Fill / NamedSlot exigem o Designer.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
BP_TestUIHUD: BeginPlay -> CreateWidget(UI_Test_Buttons, ctx/owner=GetOwningPlayerController) -> AddToViewport. BP_TestPC: bShowMouseCursor + click/mouseover events (p/ Hover/Pressed). GM_BP_TestGM: HUDClass=BP_TestUIHUD, PlayerControllerClass=BP_TestPC. L_Test_UI (Content/ZMMO/Debug/Maps): basic level com GameMode override = GM_BP_TestGM. Abrir L_Test_UI e dar Play exibe os botoes e permite testar estados. PIE confirmou HUD spawnado.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
WBP em /Game/ZMMO/UI/Debug com 6 UI_Button_Master: Primary, Secondary, Danger, Ghost (so borda), Disabled (bIsEnabled=false), AlignLeft+Square (TextAlign=Left, bRoundedBackground=false). Compila 0 erros. Use o botao Play do WBP / PIE p/ exercitar Hover/Pressed/Disabled.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- UMG nao permite WBP-com-arvore herdar de WBP-com-arvore: a base abstrata e SO a classe C++ UUIButton_Base. UI_Button_Master reparentado direto p/ /Script/ZMMO.UIButton_Base; WBP UI_Button_Base (redundante) deletado. - UI_Button_Master: arvore propria (SizeBox_Master/Bg/ContentOverlay/ButtonText/Number_Text/Image_Icon/InputActionWidget) via set_widget_tree; ButtonTextValue='Button Text'. - BS_Button_Transparent (novo CommonButtonStyle: brushes NoDraw + padding 0) atribuido ao Style -> remove o fundo branco padrao do UCommonButtonBase; so o Bg (FUIStyle) aparece. - DT_UI_Styles linha Default: Button agora com cores Aurora Arcana (Primary dourado etc.). - ARQUITETURA.md §3.3 corrigido (regra UMG: C++ abstrato -> WBP concreto, variantes sao WBPs irmaos). Compila 0 erros; visual confirmado (dourado + BUTTON TEXT, sem moldura).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Camada de estilo data-driven do cliente ZMMO, portando o nucleo do projeto de referencia (Hyper) para C++ conforme ARQUITETURA.md (BP Struct proibido):
- Source/ZMMO/Data/UI: UIStyleTypes.h (enums EUI*), UIStyleTokens.h (tokens primitive/semantic/component), UIStyleRow.h (FUIStyle + FUIStyleRow). - ZMMOThemeSubsystem: GetActiveUIStyle() resolve DT_UI_Styles por ThemeId com fallback Default. - Fontes: 8 UFontFace Inline (Cinzel/Rajdhani) em Content/ZMMO/UI/Fonts + DT_UI_Styles preenchido. - ARQUITETURA.md: prefixo de widget UI_, classes base UUI*_Base (UCLASS Abstract) sem prefixo ZMMO. - Config/DefaultGame.ini: UIStyleTable apontando DT_UI_Styles. - Scripts/import_fonts.py (importador idempotente). Inclui tambem o scaffolding do modulo ZMMO ainda nao versionado (Source/ZMMO/Data, Game/UI, Content/ZMMO, uproject, Build.cs).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Remove os pacotes de exemplo Variant_Combat, Variant_Platforming e Variant_SideScrolling (mais os External Actors/Objects associados) que vieram do template Third Person e nao fazem parte do cliente ZMMO. Ajusta Config/DefaultEditor.ini de acordo.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Estrutura inicial do cliente Unreal Zeus MMO alinhada ao padrao
"cliente solto + servidor valida input/velocidade" (ADR 0038):
- Source/ZMMO/Game/Entity/ — IZMMOEntityInterface, AZMMOEntity (base
AActor para Mob/NPC/Object), AZMMOPlayerCharacter (player local com
CMC livre, Enhanced Input, envio de C_INPUT_AXIS), AZMMOPlayerProxy
(snapshot-only para players remotos).
- Source/ZMMO/Game/Controller/ — AZMMOPlayerController com IMC defaults
(IMC_Default + IMC_MouseLook) e suporte opcional a virtual joystick.
- Source/ZMMO/Game/Modes/ — AZMMOGameMode (defaults para PlayerCharacter
/ PlayerController), UZMMOGameInstance (auto-connect ao servidor Zeus
em Init e logging dos eventos OnConnected/OnDisconnected/...).
- Source/ZMMO/Game/Network/ — UZMMOWorldSubsystem (registry
EntityId -> AActor*, dispatch dos delegates OnPlayerSpawned/Despawned/
StateUpdate; ignora snapshots locais do cliente solto).
- Config/DefaultEngine.ini — GlobalDefaultGameMode aponta para
/Script/ZMMO.ZMMOGameMode; GameInstanceClass para
/Script/ZMMO.ZMMOGameInstance; redirects para a nova hierarquia.
- ZMMO.Build.cs — depende de ZeusNetwork; PublicIncludePaths para a
nova arvore Game/Entity|Controller|Modes|Network.
- Content — assets do template ThirdPerson (Mannequins, IAs/IMCs,
Lvl_ThirdPerson + TestWorld). Os Variant_* levels ficam no commit
inicial mas serao limpos numa proxima sessao com aprovacao explicita
(Master Rule para .umap/.uasset).
Notas:
- BP_ThirdPersonCharacter/GameMode/PlayerController ainda apontam para
a hierarquia antiga e estao a aguardar aprovacao para remocao
(Master Rule).
- README.md descreve a arquitectura e o smoke test de conexao.