feat(ui): port retail component book rows
Instantiate gmSpellComponentUI category and component entries from LayoutDesc 0x21000033 instead of synthesizing catalog rows. Preserve localized category titles, authored textures and geometry, live icon/count/desired bindings, selected-object synchronization, and retail's inclusive 0..5000 desired-level contract. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
15bb61e05d
commit
a1175e6aac
13 changed files with 2395 additions and 60 deletions
|
|
@ -709,6 +709,7 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
{
|
||||
ImportedLayout? layout;
|
||||
SpellbookRowStyle? rowStyle;
|
||||
ComponentBookTemplateFactory? componentTemplates;
|
||||
lock (_bindings.Assets.DatLock)
|
||||
{
|
||||
layout = LayoutImporter.Import(
|
||||
|
|
@ -719,10 +720,16 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
_bindings.Assets.DefaultFont,
|
||||
_bindings.Assets.ResolveFont);
|
||||
rowStyle = SpellbookRowStyle.TryLoad(_bindings.Assets.Dats);
|
||||
componentTemplates = ComponentBookTemplateFactory.TryLoad(
|
||||
_bindings.Assets.Dats,
|
||||
_bindings.Assets.ResolveSprite,
|
||||
_bindings.Assets.DefaultFont,
|
||||
_bindings.Assets.ResolveFont);
|
||||
}
|
||||
if (layout is null || rowStyle is null)
|
||||
if (layout is null || rowStyle is null || componentTemplates is null)
|
||||
{
|
||||
Console.WriteLine("[M3] spellbook: layout or authored UIItem row prototype not found.");
|
||||
Console.WriteLine(
|
||||
"[M3] spellbook: layout, spell row, or component list templates not found.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -737,6 +744,7 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
_bindings.Magic.Objects,
|
||||
_bindings.Magic.PlayerGuid,
|
||||
_bindings.Magic.Components,
|
||||
_bindings.Magic.Selection,
|
||||
_bindings.Magic.ResolveSpellIcon,
|
||||
_bindings.Magic.ResolveComponentIcon,
|
||||
_bindings.Magic.SpellLevel,
|
||||
|
|
@ -747,6 +755,7 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
(message, completed) => ShowConfirmation(message, completed),
|
||||
_bindings.Magic.SetDesiredComponent,
|
||||
() => CloseWindow(WindowNames.Spellbook),
|
||||
componentTemplates,
|
||||
rowStyle.Value,
|
||||
rowFont);
|
||||
if (controller is null)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue