feat(ui): port retained widget foundations

This commit is contained in:
Erik 2026-07-10 17:55:41 +02:00
parent 44f9ec13d9
commit d825572e31
44 changed files with 84813 additions and 292 deletions

View file

@ -139,6 +139,36 @@ public class LayoutConformanceTests
Assert.Contains(0x40000000u, fontDids);
}
[Fact]
public void VitalsBinding_ReusesAuthoredTextNodesWithoutDuplicates()
{
var layout = FixtureLoader.LoadVitals();
VitalsController.Bind(
layout,
() => 1f,
() => 1f,
() => 1f,
() => "100/100",
() => "90/100",
() => "80/100");
(uint MeterId, uint TextId)[] cases =
[
(VitalsController.Health, VitalsController.HealthText),
(VitalsController.Stamina, VitalsController.StaminaText),
(VitalsController.Mana, VitalsController.ManaText),
];
foreach (var (meterId, textId) in cases)
{
var meter = Assert.IsType<UiMeter>(layout.FindElement(meterId));
var text = Assert.IsType<UiText>(layout.FindElement(textId));
Assert.Same(meter, text.Parent);
Assert.Single(meter.Children, child => child == text);
Assert.False(text.Selectable);
}
}
private static void CollectFontDids(ElementInfo node, System.Collections.Generic.List<uint> acc)
{
if (node.FontDid != 0) acc.Add(node.FontDid);