docs(D.2b): register AP-32 + IA-15 amend for importer; doc/test review fixes (N1/N4)
Process/quality items from the LayoutDesc-importer final review — no runtime behavior change. I1a — amend IA-15: the 8-piece chrome edge/corner→position mapping is no longer a guess. The LayoutImporter (ACDREAM_RETAIL_UI_IMPORTER) reads real LayoutDesc dat data and resolves positions + sprite ids directly; locked by the conformance fixture vitals_2100006C.json. Residual risk trimmed to anchor resolution at non-800×600 + controls.ini cascade. Pointers added to LayoutImporter.cs and the format-doc. I1b — add AP-32: the importer collapses the dat's nested meter structure (Type-7 → two Type-3 containers → three image-slice grandchildren each) into UiMeter's programmatic 3-slice fields instead of building those nodes generically and porting UIElement_Meter::DrawChildren. Standalone Type-0 text elements are also skipped (Plan 2). Retail oracles: UIElement_Meter::DrawChildren @0x46fbd0, UIElement_Text::DrawSelf @0x467aa0. I1c — AP section header 31 → 32. N1 — ElementReader.cs: comment at the Type-merge line explaining that a derived Type 0 (text element) inherits the base's Type 12 (style prototype), which DatWidgetFactory skips; safe for Plan 1 because vitals numbers render via UiMeter.Label. Format-doc §10: correct the "render as UiDatElement" sentence to "skipped entirely" (Type-0 → inherits Type-12 via Merge → factory returns null). N4 — new conformance test VitalsTree_TextLabel_InheritsFontDidFromBaseLayout: walks the raw ElementInfo tree from the fixture and asserts at least one element carries FontDid==0x40000000, proving Resolve()'s inheritance merge fired against real dat data. FixtureLoader gains LoadVitalsInfos() that returns the raw tree without calling Build. Tests: 36 pass (was 35), 0 errors, 0 warnings. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2b653b8fc0
commit
4dcc90cb51
5 changed files with 69 additions and 6 deletions
|
|
@ -142,6 +142,12 @@ public static class ElementReader
|
|||
var m = new ElementInfo
|
||||
{
|
||||
Id = derived.Id != 0 ? derived.Id : base_.Id,
|
||||
// Type: derived wins if non-zero; Type 0 (text element per format §8) inherits the base's Type.
|
||||
// For a text element whose base prototype is Type 12 (style prototype), this yields Type 12 —
|
||||
// which DatWidgetFactory skips (returns null). That is intentional for Plan 1: vitals text
|
||||
// numbers render via UiMeter.Label bound by VitalsController, not a dat text node.
|
||||
// A Plan-2 standalone text element would need a type-preserving path (e.g. float? nullable
|
||||
// Width/Height, or explicit handling of Type 0 before the merge).
|
||||
Type = derived.Type != 0 ? derived.Type : base_.Type,
|
||||
X = derived.X,
|
||||
Y = derived.Y,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue