feat(ui): finish retail toolbar controls

Discover all seven panel launchers from their DAT panel-id attributes, route mounted panels through event-driven retained window state, and ghost unavailable panels. Port Use and Examine selection/target behavior with exact Appraise dispatch and retail cursor modes.

Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-11 12:11:53 +02:00
parent 21fefce0e0
commit d3d1c895a0
19 changed files with 478 additions and 72 deletions

View file

@ -31,6 +31,7 @@ public sealed class RetailWindowManager : IDisposable
public bool IsLocked => _root.UiLocked;
public IReadOnlyCollection<RetailWindowHandle> Windows => _byName.Values;
public event Action<string, bool>? WindowVisibilityChanged;
public RetailWindowHandle Register(
string name,
@ -233,6 +234,7 @@ public sealed class RetailWindowManager : IDisposable
}
handle.NotifyVisibility(visible);
WindowVisibilityChanged?.Invoke(handle.Name, visible);
}
private void OnKeyboardFocusChanged(UiElement? oldFocus, UiElement? newFocus)