The quest log is on screen. Rows come from the live tracker joined to the authored catalog, the Status column runs QT4's port of FillProgressString, and the detail pane shows contact, locations, description and the other timer. Two things measured rather than assumed, each now pinned by an installed-DAT test rather than left to the commit message: The tab pairing is read from the authored 0x2E table, not inferred from x-order — the FA campaign had to correct exactly that mistake, and Contracts turns out to be the authored DEFAULT tab (0x32 = True), so opening on the wrong one would have looked like an empty panel. The open path needed no keybind at all. Toolbar button 0x1000055A authors 0x10000029 = 0x19 and has been sitting in ToolbarController.PanelButtonIds since the toolbar was ported — it just had no panel behind it, so clicking it did nothing. Registering slot 25 finished a wiring that was already three-quarters present. The list rebuild is revision-gated while the repeat countdown is not: nothing on the wire changes as a cooldown runs down, so a rebuild-gated timer would freeze on screen, and a per-frame rebuild would reset the player's scroll under them. Both directions have a test. Deliberately inert: the Abandon button (retail's abandon path is a contract-registry command this campaign did not port — authored and visible, but wiring a no-op handler would look responsive and lie), and the Journal notes and Page List tabs, which are their own feature. Campaign QT slices 5 and 6 of 6 — code-complete, connected gate owed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
51 lines
2.5 KiB
C#
51 lines
2.5 KiB
C#
namespace AcDream.App.UI;
|
|
|
|
/// <summary>Canonical registry names for top-level retail-UI windows, so the
|
|
/// mount, the window registry, and the toggle keybind all agree on one literal.</summary>
|
|
public static class WindowNames
|
|
{
|
|
public const string Vitals = "vitals";
|
|
|
|
/// <summary>The side-by-side vitals row (retail gmFloatySideVitalsUI,
|
|
/// LayoutDesc 0x21000075) — shown instead of <see cref="Vitals"/> when the
|
|
/// SideBySideVitals character option is set (see
|
|
/// <see cref="Layout.VitalsSideBySideController"/>).</summary>
|
|
public const string SideVitals = "side-vitals";
|
|
public const string Toolbar = "toolbar";
|
|
public const string Character = "character";
|
|
public const string CharacterInformation = "character-information";
|
|
public const string Inventory = "inventory";
|
|
public const string ExternalContainer = "external-container";
|
|
public const string Chat = "chat";
|
|
public const string ChatWindow1 = "chat-window-1";
|
|
public const string ChatWindow2 = "chat-window-2";
|
|
public const string ChatWindow3 = "chat-window-3";
|
|
public const string ChatWindow4 = "chat-window-4";
|
|
public const string Radar = "radar";
|
|
public const string Combat = "combat";
|
|
public const string JumpPowerbar = "jump-powerbar";
|
|
public const string Spellbook = "spellbook";
|
|
public const string Indicators = "indicators";
|
|
public const string PositiveEffects = "effects-positive";
|
|
public const string NegativeEffects = "effects-negative";
|
|
public const string LinkStatus = "link-status";
|
|
public const string MiniGame = "mini-game";
|
|
public const string Vitae = "vitae";
|
|
public const string Examination = "examination";
|
|
public const string Vendor = "vendor";
|
|
public const string SecureTrade = "secure-trade";
|
|
public const string Options = "options";
|
|
public const string KeyboardConfig = "keyboard-config";
|
|
|
|
/// <summary>Campaign FA slice FA3: the four-tab Friends/Allegiance/
|
|
/// Fellowship/Squelch panel (<see cref="RetailPanelCatalog.SocialPanel"/>).</summary>
|
|
public const string SocialPanel = "social-panel";
|
|
|
|
/// <summary>Batch C (overnight hover/UI round): the two-tab Map/House
|
|
/// panel (<see cref="RetailPanelCatalog.MapHouse"/>).</summary>
|
|
public const string MapHouse = "map-house";
|
|
|
|
/// <summary>Campaign QT slice QT5: the three-tab Contracts/Journal/Page
|
|
/// List panel (<see cref="RetailPanelCatalog.Journal"/>).</summary>
|
|
public const string Journal = "journal";
|
|
}
|