feat(ui): port retail creature appraisal presentation
Render assessed creatures through the shared private viewport with retail heading, bounding-box camera, and light. Build the exact authored nine-row stat list and resolve creature names from the retail EnumMapper while keeping remaining font/sequencer adaptations explicit. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
f1a7912160
commit
7eaa68a5f4
26 changed files with 2780 additions and 237 deletions
|
|
@ -301,6 +301,8 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
public SpellcastingUiController? SpellcastingUiController { get; private set; }
|
||||
public SpellbookWindowController? SpellbookWindowController { get; private set; }
|
||||
public AppraisalUiController? AppraisalController { get; private set; }
|
||||
public UiViewport? CreatureAppraisalViewportWidget { get; private set; }
|
||||
public UiElement? ExaminationFrame { get; private set; }
|
||||
public EffectsUiController? PositiveEffectsController { get; private set; }
|
||||
public EffectsUiController? NegativeEffectsController { get; private set; }
|
||||
public LinkStatusUiController? LinkStatusUiController { get; private set; }
|
||||
|
|
@ -961,9 +963,26 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
|
||||
private void MountAppraisal()
|
||||
{
|
||||
ImportedLayout? layout = Import(
|
||||
AppraisalUiController.LayoutId,
|
||||
AppraisalUiController.RootId);
|
||||
ImportedLayout? layout;
|
||||
CreatureAppraisalRowTemplateFactory? creatureRows;
|
||||
CreatureDisplayNameResolver? creatureNames;
|
||||
lock (_bindings.Assets.DatLock)
|
||||
{
|
||||
layout = LayoutImporter.Import(
|
||||
_bindings.Assets.Dats,
|
||||
AppraisalUiController.LayoutId,
|
||||
AppraisalUiController.RootId,
|
||||
_bindings.Assets.ResolveSprite,
|
||||
_bindings.Assets.DefaultFont,
|
||||
_bindings.Assets.ResolveFont);
|
||||
creatureRows = CreatureAppraisalRowTemplateFactory.TryLoad(
|
||||
_bindings.Assets.Dats,
|
||||
_bindings.Assets.ResolveSprite,
|
||||
_bindings.Assets.DefaultFont,
|
||||
_bindings.Assets.ResolveFont);
|
||||
creatureNames = CreatureDisplayNameResolver.Load(
|
||||
_bindings.Assets.Dats);
|
||||
}
|
||||
if (layout is null)
|
||||
{
|
||||
Console.WriteLine(
|
||||
|
|
@ -981,7 +1000,9 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
_bindings.Appraisal.SendSetInscription,
|
||||
_bindings.Appraisal.DisplaySystemMessage,
|
||||
show: () => Host.ShowWindow(WindowNames.Examination),
|
||||
close: () => CloseWindow(WindowNames.Examination));
|
||||
close: () => CloseWindow(WindowNames.Examination),
|
||||
creatureRowTemplates: creatureRows,
|
||||
creatureNames: creatureNames);
|
||||
if (controller is null)
|
||||
{
|
||||
Console.WriteLine(
|
||||
|
|
@ -991,7 +1012,7 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
|
||||
AppraisalController = controller;
|
||||
UiElement root = layout.Root;
|
||||
_ = RetailWindowFrame.Mount(
|
||||
RetailWindowHandle handle = RetailWindowFrame.Mount(
|
||||
Host.Root,
|
||||
root,
|
||||
_bindings.Assets.ResolveSprite,
|
||||
|
|
@ -1013,6 +1034,10 @@ public sealed class RetailUiRuntime : IDisposable
|
|||
ContentClickThrough = false,
|
||||
Controller = controller,
|
||||
});
|
||||
CreatureAppraisalViewportWidget =
|
||||
layout.FindElement(AppraisalUiController.CreatureViewportId)
|
||||
as UiViewport;
|
||||
ExaminationFrame = handle.OuterFrame;
|
||||
Console.WriteLine(
|
||||
"[M4] retail examination window from LayoutDesc 0x2100006B.");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue