ServerSelect (Fase 1): - UIServerSelectScreen_Base: subscribe OnRawMessage + C_WORLD_LIST_REQUEST - WBP_ServerCard instanciado dinamicamente em GridPanel CardContainer (2 cols) - UIServerCard_Base: SetFromEntry + OnCardPressed delegate + UI_Button_Master - Push real-time S_WORLD_STATUS_UPDATE (opcode 2062) atualiza card in-place - FZMMOWorldEntry struct, EZMMOWorldState enum no wire (offline/online/maint) - Sem hardcap de slots — cards usam toda largura via ColumnFill weights Lobby/CharSelect (Fase 1.5): - UIUserLobbyScreen_Base + WBP_UserLobby (WidgetSwitcher: lista + create) - C_CHAR_LIST_REQUEST filtrado por SelectedWorldId do FlowSubsystem - UICharCard_Base + WBP_CharCard com Select/Delete + Accept/Cancel quando delete agendado; Text_DeleteCountdown atualiza em tempo real (timer 1s) - UICharacterCreatePage_Base + WBP_CharacterCreate (Name + ComboBox class) - Handlers S_CHAR_SELECT_OK (handoff parse), CHAR_CREATE_OK/REJECT, CHAR_DELETE_ACK/ACCEPT_ACK/CANCEL_ACK (refresh lista) Auxiliares + fixes: - ARQUITETURA_SERVER_SELECT.md + ARQUITETURA_CHARACTER_MODEL.md - UIFrontEndFlowSubsystem: SelectedWorldId state + transicao Lobby - DA_FrontEndScreenSet: Lobby -> WBP_UserLobby_C - UICheckBox_Base + UICommonText_Base (componentes auxiliares) - BSB_Button_Transparent.Disabled DrawAs=IMAGE -> NoDraw (fix bg branco) - WBP_ServerCard layout: HBox para chips Region/Ping/Status, SizeBox 10x10 no Dot verde (anti-overflow); SelfHitTestInvisible em containers (hover)
97 lines
3.1 KiB
C
97 lines
3.1 KiB
C
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "Engine/DataTable.h"
|
|
#include "UIStyleTypes.h"
|
|
#include "UIStyleTokens.h"
|
|
#include "UIStyleRow.generated.h"
|
|
|
|
/**
|
|
* Struct raiz que agrega todos os tokens de estilo de um tema.
|
|
*
|
|
* Adicionar membros aqui (fase 2/3) é mudança aditiva e segura para a
|
|
* DataTable existente — mas, ao alterar este struct em produção, fazer
|
|
* backup de DT_UI_Styles (UHT invalida rows serializadas se a coluna não
|
|
* preservar valores). Ver ARQUITETURA.md / docs Epic sobre DataTable.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct ZMMO_API FUIStyle
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStylePalette Palette;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleSemantic Semantic;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleText Text;
|
|
|
|
/**
|
|
* Categorias tipográficas nomeadas (data-driven). O autor define as
|
|
* chaves aqui no DT_UI_Styles ("Title", "Section", "Body", "Label",
|
|
* "Dim", ou customizadas); o UUICommonText_Base escolhe pelo nome
|
|
* (dropdown populado a partir destas chaves — sem enum fixo em C++).
|
|
*/
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
TMap<FName, FUITextStyle> TextRoles;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleButton Button;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStylePanel Panel;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleBorders Borders;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleProgressBar ProgressBar;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleTooltip Tooltip;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleSpinner Spinner;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleCheckBox CheckBox;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyleInput Input;
|
|
|
|
/**
|
|
* Fundo de tela cheia do front-end (ex.: Boot/Login). Brush data-driven:
|
|
* a tela aplica no seu Border_Bg via RefreshUIStyle — nunca hard-ref no
|
|
* WBP (ARQUITETURA.md §5). Preenchido em DT_UI_Styles.
|
|
*/
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FSlateBrush ScreenBackground;
|
|
};
|
|
|
|
/**
|
|
* Linha de DT_UI_Styles. O Row Name é o ThemeId (ex.: "Default", "RPG"),
|
|
* espelhando DT_ThemeCalendar e ThemeRegistry — assim a camada de estilo
|
|
* é consumidora do ThemeId já resolvido pelo UZMMOThemeSubsystem.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct ZMMO_API FUIStyleRow : public FTableRowBase
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FText DisplayName;
|
|
|
|
/** Validação tipada de design-time; runtime resolve por ThemeId/Row Name. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
EUITheme Theme = EUITheme::None;
|
|
|
|
/** Ponte para o ThemeId resolvido pelo UZMMOThemeSubsystem. */
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FName ThemeId;
|
|
|
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "UI Style")
|
|
FUIStyle Style;
|
|
};
|