feat(char-spawn): Fase 4 client + UI WBPs paralelo (#2)
Co-authored-by: Mateus Rodrigues <mateuus27@outlook.com> Co-committed-by: Mateus Rodrigues <mateuus27@outlook.com>
This commit was merged in pull request #2.
This commit is contained in:
@@ -7,6 +7,10 @@
|
||||
|
||||
Última actualização: 2026-05-11.
|
||||
|
||||
> **Extensões da arquitetura** (documentos normativos paralelos, escopo específico):
|
||||
> - [`ARQUITETURA_SERVER_SELECT.md`](ARQUITETURA_SERVER_SELECT.md) — Server Select, lista de mundos, handoff CharServer↔WorldServer, multi-region, queue, Valkey. Roadmap em 7 fases.
|
||||
> - [`ARQUITETURA_CHARACTER_MODEL.md`](ARQUITETURA_CHARACTER_MODEL.md) — Stats primários (STR/AGI/VIT/INT/DEX/LUK), classes (Aprendiz → especializações), fórmulas de stats derivados (ATK/MATK/DEF/...), `jobs.yml` data-driven, stat allocation server-side. Espelha rathena.
|
||||
|
||||
> **Sumário de mudanças (2026-05-11):** adicionada secção de **temas sazonais
|
||||
> de UI** (`UI/Themes/`), com tutorial §4.7, regra de "no hard ref a textura
|
||||
> em widget" em §5 e política de activação em §1.10.
|
||||
@@ -210,7 +214,9 @@ Content/
|
||||
│ ├── UI/ ← HUD, Login, CharacterSelect, Inventory,
|
||||
│ │ │ Chat, Party, Guild, Trade, Quest, Map,
|
||||
│ │ │ Shared, Icons
|
||||
│ │ ├── Shared/ ← WBPs reutilizáveis (UI_Button_Master…)
|
||||
│ │ ├── Shared/ ← WBPs reutilizáveis (UI_Button_Master,
|
||||
│ │ │ UI_Panel_Master, UI_Spinner_Master,
|
||||
│ │ │ UI_CheckBox_Master, UI_Input_Master)
|
||||
│ │ ├── FrontEnd/ ← WBP_PrimaryGameLayout, DA_FrontEndScreenSet,
|
||||
│ │ │ telas refinadas (Boot/Login/… vindas do Forge)
|
||||
│ │ ├── Fonts/ ← Font_*/FF_* (Cinzel, Rajdhani)
|
||||
@@ -268,9 +274,16 @@ Source/ZMMO/
|
||||
│ ├── Network/ ← UZMMOWorldSubsystem
|
||||
│ └── UI/ ← runtime de UI (não é contrato de dados)
|
||||
│ ├── ZMMOThemeSubsystem.* ← resolução de tema
|
||||
│ ├── Widgets/ ← UUIButton_Base, UUIPanel_Base
|
||||
│ ├── Widgets/ ← UUIButton_Base, UUIPanel_Base,
|
||||
│ │ UUISpinner_Base, UUICheckBox_Base,
|
||||
│ │ UUIInput_Base (variantes Box/Outline/
|
||||
│ │ Underline/Search), UUICommonText_Base
|
||||
│ │ (EUITextRole → FUIStyle.Text)
|
||||
│ └── FrontEnd/ ← infra de navegação CommonUI:
|
||||
│ UUIActivatableScreen_Base,
|
||||
│ UUIBootScreen_Base (1ª tela),
|
||||
│ UUILoginScreen_Base (2ª tela),
|
||||
│ CharServerOpcodes.h (faixa 2000-2099),
|
||||
│ UUIPrimaryGameLayout_Base,
|
||||
│ UUIManagerSubsystem (LocalPlayer),
|
||||
│ UUIFrontEndFlowSubsystem (GameInstance),
|
||||
@@ -622,6 +635,24 @@ Fluxo geral: **Boot → Connecting → Login → ServerSelect → Lobby → Ente
|
||||
navegadas por um stack CommonUI **dentro** da tela do Lobby — não são estados
|
||||
de topo do fluxo.
|
||||
|
||||
**Rede do pré-login:** o `UUIFrontEndFlowSubsystem` dirige a conexão ao
|
||||
**`UZeusCharServerSubsystem`** (WebSocket, `CharServerUrl` de Project Settings,
|
||||
default `ws://127.0.0.1:7100/zeus`) ao entrar em **Boot** — NÃO o
|
||||
`UZeusNetworkSubsystem` (UDP, world server, usado só no travel
|
||||
EnteringWorld→InWorld). A tela Boot (`UUIBootScreen_Base`) observa o
|
||||
CharServer: libera o botão "Iniciar" no `OnConnected`; o clique chama
|
||||
`UUIFrontEndFlowSubsystem::RequestEnterLogin()` → estado Login. Tela nunca
|
||||
segura hard-ref de asset de tema (cores via `FUIStyle`; §5).
|
||||
|
||||
**Login:** a tela `UUILoginScreen_Base` autentica pelo MESMO WebSocket do
|
||||
CharServer enviando `C_CHAR_AUTH_REQUEST` (opcode 2000, ver
|
||||
`CharServerOpcodes.h`) com um token. Escopo atual = **dev**: token `dev:<n>`
|
||||
aceito pelo `StubTokenValidator` (senha ignorada no stub). `S_CHAR_AUTH_OK`
|
||||
→ `RequestEnterServerSelect()` → estado ServerSelect; `S_CHAR_AUTH_REJECT`
|
||||
→ mensagem de erro na própria tela. Auth real (HTTP `/auth/login` + JWT)
|
||||
fica para tarefa dedicada. "Voltar" → `RequestBack()` (Login→Boot, CharServer
|
||||
permanece conectado).
|
||||
|
||||
1. Prototipar a tela em HTML/CSS em `Tools/Templates/MMO_Widget/` (ou usar os
|
||||
templates já existentes).
|
||||
2. Rodar o Zeus UMG Forge (HTML→UMG). Saída crua: `Content/AutoCreated/<batch>/`.
|
||||
|
||||
Reference in New Issue
Block a user