FUIStylePanel migra de TMap<EUIPanelTexture, FSlateBrush> (enum legacy) para
TMap<FName, FSlateBrush>. Permite adicionar/remover categorias diretamente
no DT_UI_Styles via dropdown (meta=GetOptions) sem mexer no enum em C++.
PanelBackground, PanelOutline e PanelOutlineEffect viraram *_DEPRECATED.
Versoes novas: PanelBackgroundByName, PanelOutlineByName,
PanelOutlineEffectByName.
PostSerialize migra os legacy -> ByName no PostLoad de cada FUIStyleRow.
Apos o primeiro re-save no editor os deprecated ficam vazios e o codigo
vira no-op. PropertyRedirects em DefaultEngine.ini preservam a leitura
do asset antigo (3 entries: PanelBackground, PanelOutline, PanelOutlineEffect).
Atualiza UIPanel_Base pra ler ByName + DT_UI_Styles, UI_Panel_Master e
UI_PlayerStatus_Window resalvos. Inclui nova textura
T_Panel_Outline_Effect_Square_02.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- UIFrontEndFlowSubsystem: HandlePostLoadMap/HandlePlayerSpawned agora
registram o StepId em PendingLoadingSteps_ quando ActiveLoadingScreen
ainda eh null (race com RequestAsyncLoad do WBP_Loading). Lambda do
callback async drena o set apos criar a tela, fechando o loading
retroativamente. Servidor rapido (TryFinalizeEnterWorld) deixava o
cliente preso em "entrando no mundo" quando o async load atrasava.
- UIPlayerStatus_Window: herda de UIDraggableWindow_Base (drag + persist
via UZMMOUISaveGame). Rename CloseBtn -> Button_Close, adiciona
Background_Panel/Container_Header/Container_Stats, NativeOnKeyDown
(Alt+A fecha), NativeGetDesiredFocusTarget=self. Remove bIsBackHandler
pra parar o "Cannot create action binding" no log (projeto nao tem
DefaultBackAction no CommonUISettings).
- UIInGameFlowSubsystem.SetState: skip re-push do HUD quando voltando de
StatusWindow/Inventory/Menu pro Playing (Old != None && != Playing) pra
evitar Construct novo do HUD e o flicker dos textos HP/SP.
- Novos: UIDraggableWindow_Base (drag generico + persistencia) e
UIWindowSaveGame (TMap<FName, FVector2D> por WindowId).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- PlayerState ganha CharName (Replicated) + SetCharInfo(CharName, GuildName)
- ZMMOPlayerCharacter assina FZeusOnCharInfoReceived; TryApplyCachedCharInfo
resolve race se S_CHAR_INFO chega antes do pawn possuir
- UIPlayerStatus_Window header le PlayerState->CharName (fallback p/ GetPlayerName)
em vez do "Mateuus-61E9B19A4FB2" generico
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 3 novas classes C++ (UUIPlayerStatus_Window/StatRow/BonusRow) substituem
UZMMOStatusWindowWidget (removida); StatRow/BonusRow sao reutilizaveis
via BindWidgetOptional + delegate OnPlusClicked(StatId).
- Window bindea no UZMMOAttributeComponent (PlayerState) e popula header
(CharName, Job via UZMMOJobsSubsystem, BaseLevel/JobLevel) + 14 rows
(6 primarios em StatRow com botao "+", 8 derivados em BonusRow).
- Fix spam-click do "+": bPlusButtonsLocked desabilita botoes ate
OnStatAllocReply do server ou proximo snapshot.
- WBPs movidos pra /UI/Screens/PlayerStatus/, material pra /UI/Materials/.
- 58 widgets renomeados seguindo convencao
(Frame_/Layout_/Panel_/Container_/Border_/Text_/Image_/Spacer_/List_).
- DA_InGameScreenSet auto-atualizado pelo move.
- Remove WBP_StatusWindow inline (legado).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>