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;
}