feat(ui): port retail appraisal panel

Preserve retail's one-pending-appraisal busy lifetime, parse the complete gated response, and mount the authored examination layout in the shared main-panel host. Keep known 3D preview and inscription-write gaps explicit in AP-110.
This commit is contained in:
Erik 2026-07-23 11:34:08 +02:00
parent 6b1ae4fb76
commit 643cdfe66e
24 changed files with 17132 additions and 40 deletions

View file

@ -16,6 +16,12 @@ public static class RetailPanelCatalog
public const uint Character = 11u;
public const uint Magic = 13u;
public const uint Vitae = 15u;
/// <summary>
/// Private retained-host identity for retail's floating examination UI.
/// The original opens it by notice rather than a gmPanelUI numeric child,
/// so this value is deliberately outside the DAT panel-id range.
/// </summary>
public const uint Examination = 0x8000_0001u;
private static readonly (uint PanelId, string WindowName)[] Mounted =
{
@ -28,6 +34,7 @@ public static class RetailPanelCatalog
(Character, WindowNames.Character),
(Magic, WindowNames.Spellbook),
(Vitae, WindowNames.Vitae),
(Examination, WindowNames.Examination),
};
private static readonly (uint PanelId, string WindowName)[] Toolbar =