diff --git a/src/AcDream.App/UI/Layout/VitalsController.cs b/src/AcDream.App/UI/Layout/VitalsController.cs index a455761a..c570fb34 100644 --- a/src/AcDream.App/UI/Layout/VitalsController.cs +++ b/src/AcDream.App/UI/Layout/VitalsController.cs @@ -12,6 +12,10 @@ namespace AcDream.App.UI.Layout; /// The slice sprites + dat font on each are already /// set by during tree construction; this controller /// only binds the dynamic vitals data. Do not touch meter rendering fields here. +/// +/// Element ids confirmed from +/// docs/research/2026-06-15-layoutdesc-format.md §11 +/// (vitals window 0x2100006C dump). /// public static class VitalsController { diff --git a/tests/AcDream.App.Tests/UI/Layout/VitalsBindingTests.cs b/tests/AcDream.App.Tests/UI/Layout/VitalsBindingTests.cs index 8b430265..133d51ca 100644 --- a/tests/AcDream.App.Tests/UI/Layout/VitalsBindingTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/VitalsBindingTests.cs @@ -16,7 +16,7 @@ public class VitalsBindingTests public void Bind_SetsHealthMeterFillFromProvider() { var health = new UiMeter(); - var layout = FakeLayout(("0x100000E6", health)); + var layout = FakeLayout((VitalsController.Health, health)); float hp = 0.42f; VitalsController.Bind(layout, @@ -40,9 +40,9 @@ public class VitalsBindingTests var stamina = new UiMeter(); var mana = new UiMeter(); var layout = FakeLayout( - ("0x100000E6", health), - ("0x100000EC", stamina), - ("0x100000EE", mana)); + (VitalsController.Health, health), + (VitalsController.Stamina, stamina), + (VitalsController.Mana, mana)); VitalsController.Bind(layout, healthPct: () => 0.25f, @@ -70,7 +70,7 @@ public class VitalsBindingTests { // Only Health is present; Stamina and Mana are absent from the layout. var health = new UiMeter(); - var layout = FakeLayout(("0x100000E6", health)); + var layout = FakeLayout((VitalsController.Health, health)); // Should not throw even though Stamina/Mana are missing. VitalsController.Bind(layout, @@ -87,13 +87,12 @@ public class VitalsBindingTests // ── Helpers ─────────────────────────────────────────────────────────────── - private static ImportedLayout FakeLayout(params (string idHex, UiElement e)[] items) + private static ImportedLayout FakeLayout(params (uint id, UiElement e)[] items) { var dict = new Dictionary(); var root = new UiPanel(); - foreach (var (idHex, e) in items) + foreach (var (id, e) in items) { - uint id = Convert.ToUInt32(idHex, 16); root.AddChild(e); dict[id] = e; }