Files
ZMMO/Source/ZMMO/Game/UI/FrontEnd/ZMMORealmEntry.h
Mateus Rodrigues 4e14f1feb6 refactor(charserver): World -> Realm + parse gatewayEndpoint + fix PendingLoadingSteps race
- ZMMOWorldEntry -> ZMMORealmEntry (RealmId + GatewayEndpoint single string)
- CharServerOpcodes: S_WORLD_* -> S_REALM_*
- UIServerSelectScreen: parse S_REALM_LIST com gatewayEndpoint
- UIUserLobbyScreen: parse S_CHAR_SELECT_OK, split gatewayEndpoint via FString::Split(":", FromEnd) — IPv6 tolerante
- UICharacterCreatePage: SubmitCreate envia realmId
- ZMMOCharSummary: WorldId -> RealmId
- UIFrontEndFlowSubsystem: GetSelectedRealmId; fix de race em PendingLoadingSteps_ (TSet snapshot via MoveTemp antes de iterar; evita access violation em TConstSetBitIterator durante async lambda)

Conferido E2E: 2 standalone instances entram simultaneamente em Provinces diferentes via Gateway.
2026-05-31 20:02:47 -03:00

49 lines
1.4 KiB
C

#pragma once
#include "CoreMinimal.h"
#include "ZMMORealmEntry.generated.h"
/**
* Entrada de Realm (cluster Gateway+Provinces) recebida do CharServer via
* S_REALM_LIST. Espelha `RealmRecord` em
* `Server/ZeusCharServer/src/types/realm.types.ts`.
*
* `GatewayEndpoint` e' o endereco "host:port" do Gateway do Realm (UMA
* single string vinda do server — substitui o par host+port da versao
* anterior). Cliente faz split por `:` quando precisa abrir UDP.
*
* State usa o wire raw (0=Offline, 1=Online, 2=Maintenance — ver
* ZMMOWireRealmState em CharServerOpcodes.h).
*/
USTRUCT(BlueprintType)
struct FZMMORealmEntry
{
GENERATED_BODY()
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
FString RealmId;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
FString Name;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
FString Region;
/** Endpoint do Gateway no formato "host:port" (ex: "127.0.0.1:7777"). */
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
FString GatewayEndpoint;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
int32 Capacity = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
int32 Pop = 0;
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
int32 QueueLen = 0;
/** 0=Offline, 1=Online, 2=Maintenance (vide ZMMOWireRealmState). */
UPROPERTY(BlueprintReadOnly, Category = "Zeus|Realm")
uint8 State = 0;
};