feat(ui): port retail gameplay indicator bar

Promote all seven LayoutDesc 0x21000071 controls to retained buttons, drive link quality, effects, Vitae, and burden from live state, and route Character Information plus end-session confirmation through the shared UI owners. Keep network timing in WorldSession and pin retail thresholds, flash cadence, authored states, and action routing with focused conformance tests.

Release build and all 5,807 tests pass with five intentional skips. Connected visual gate pending.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-17 10:02:44 +02:00
parent 06016014bc
commit 52c529be86
15 changed files with 857 additions and 204 deletions

View file

@ -44,6 +44,39 @@ Copy this block when adding a new issue:
---
## #224 — Gameplay indicator bar only implemented effect icons
**Status:** IN-PROGRESS
**Severity:** MEDIUM
**Filed:** 2026-07-17
**Component:** retained UI / gameplay indicators / session telemetry
**Description:** Retail LayoutDesc `0x21000071` is one seven-control strip for
link quality, helpful effects, harmful effects, vitae, burden/character
information, mini-game state, and end-character-session. acdream only promoted
the two effects controls to behavioral buttons; the other custom classes fell
back to inert generic DAT elements.
**Root cause / status:** `DatWidgetFactory` recognized only
`gmUIElement_EffectsIndicator`. The retained controller consequently had no
live bindings for session packet age, Vitae, or the player load ratio and did
not dispatch Character Information or the shared logout confirmation path.
**Files:** `src/AcDream.App/UI/Layout/IndicatorBarController.cs`;
`src/AcDream.App/UI/Layout/DatWidgetFactory.cs`;
`src/AcDream.Core.Net/WorldSession.cs`; `src/AcDream.App/UI/RetailUiRuntime.cs`.
**Research:**
`docs/research/2026-07-17-retail-indicator-bar-pseudocode.md`.
**Acceptance:** All seven authored controls render their retail sprites. Link
quality follows the 5/20/40-second thresholds and bad-link flash cadence;
helpful, harmful, Vitae, and burden react to live state; the burden icon opens
Character Information; effects open their matching panels; crossed swords use
the shared confirmation dialog and close gracefully only after acceptance.
---
## #223 — Primary panel resize stopped before the screen edge
**Status:** DONE — 2026-07-17 (connected visual gate accepted)