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

@ -146,6 +146,7 @@ public sealed class SelectedObjectController
Left = 0f, Top = 0f, Width = _name.Width, Height = NameBandHeight,
Anchors = AnchorEdges.Left | AnchorEdges.Top | AnchorEdges.Right,
Centered = true,
OneLine = true,
DatFont = datFont,
ClickThrough = true,
AcceptsFocus = false,
@ -215,7 +216,7 @@ public sealed class SelectedObjectController
if (guid is null)
{
// Deselect: clear the overlay flash immediately too.
SetOverlayState("");
SetOverlayState(UiStateInfo.DirectStateId);
_flashRemaining = 0;
return;
}
@ -227,7 +228,9 @@ public sealed class SelectedObjectController
// ── 3. Selection overlay: brief flash (retail container ObjectSelected
// = Pause(0.25s)→Normal). "StackedItemSelected" for stacks. ──────────────
SetOverlayState(_stackSize(g) > 1u ? "StackedItemSelected" : "ObjectSelected");
SetOverlayState(_stackSize(g) > 1u
? RetailUiStateIds.StackedItemSelected
: RetailUiStateIds.ObjectSelected);
_flashRemaining = FlashSeconds;
// ── 4. Health: query, and show the meter only if real health is already known.
@ -258,11 +261,11 @@ public sealed class SelectedObjectController
if (_flashRemaining <= 0) return;
_flashRemaining -= deltaSeconds;
if (_flashRemaining <= 0)
SetOverlayState(""); // flash done → overlay back to blank
SetOverlayState(UiStateInfo.DirectStateId); // flash done → overlay back to blank
}
private void SetOverlayState(string state)
private void SetOverlayState(uint state)
{
if (_overlay is not null) _overlay.ActiveState = state;
_overlay?.TrySetRetailState(state);
}
}