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)
103 lines
2.9 KiB
C
103 lines
2.9 KiB
C
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "ZMMOCharSummary.generated.h"
|
|
|
|
/** Stats primarios do personagem (espelha `CharStats` em char.types.ts). */
|
|
USTRUCT(BlueprintType)
|
|
struct FZMMOCharStats
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Str = 1;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Agi = 1;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Vit = 1;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Int = 1;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Dex = 1;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Luk = 1;
|
|
};
|
|
|
|
/** Aparencia (espelha `CharAppearance` em char.types.ts). */
|
|
USTRUCT(BlueprintType)
|
|
struct FZMMOCharAppearance
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 Hair = 0;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 HairColor = 0;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 SkinColor = 0;
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char") int32 BodyType = 0;
|
|
};
|
|
|
|
/**
|
|
* Resumo de personagem recebido do CharServer via S_CHAR_LIST.
|
|
* Espelha `CharSummary` em `Server/ZeusCharServer/src/types/char.types.ts`.
|
|
*/
|
|
USTRUCT(BlueprintType)
|
|
struct FZMMOCharSummary
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
/** charId — BIGINT UNSIGNED no banco; armazenado como FString aqui pra preservar 64 bits. */
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FString CharId;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FString WorldId;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 Slot = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FString Name;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 ClassId = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 BaseLevel = 1;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 BaseExp = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 JobLevel = 1;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 JobExp = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FZMMOCharStats Stats;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 Hp = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 MaxHp = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 Sp = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 MaxSp = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int32 Money = 0;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FString MapName;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FVector Position = FVector::ZeroVector;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
float YawDeg = 0.f;
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
FZMMOCharAppearance Appearance;
|
|
|
|
/** Epoch ms em que o delete vai efetivar. 0 = nao agendado. */
|
|
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Char")
|
|
int64 DeleteScheduledAtMs = 0;
|
|
};
|