fix(ui): complete retail indicator detail panels

Port the authored effect row template, remaining-time and selection details, synchronize the full gmPanelUI child geometry, and route the burden indicator to Character Information panel 3.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-17 11:36:43 +02:00
parent a96767ba6d
commit d1d603105f
24 changed files with 3696 additions and 147 deletions

View file

@ -223,15 +223,44 @@ For every toolbar or indicator detail page:
register page with gmPanelUI panel id
when shown:
hide the current child
move the requested child to the shared main-panel placement
apply the shared main-panel rectangle to the requested child
show only the requested child
when a page with bool property 0x10000049 closes:
restore the deferred ordinary child
```
Helpful/Harmful, Link Status, Vitae, and the Mini Game shell therefore share
the same retained host position as Inventory, Character, and Magic. They do
not remember independent positions.
Character Information, Helpful/Harmful, Link Status, Vitae, and the Mini Game
shell therefore share the same retained host size and position as Inventory,
Character/Skills, and Magic. They do not remember independent rectangles.
The burden/backpack indicator sends panel id `3`, whose production child is
root `0x10000183` under LayoutDesc `0x2100006E`. Panel `11` is the separate
Attributes/Skills child and is not the burden indicator destination.
### Helpful and harmful effect rows
```text
gmEffectsUI::RebuildList @ 0x004B8350:
sort visible enchantment tokens alphabetically by spell name
AddItemFromTemplateList(template 0)
EffectInfoRegion row template 0x10000128 (LayoutDesc 0x2100001B):
icon 0x10000129 at x=0, 32 x 32
name 0x1000012A at x=37, 188 x 32
time left 0x1000012B at x=225, 50 x 32
gmEffectsUI::UpdateSelection @ 0x004B7F90:
no selected spell -> display ID_Effects_Info_SelectASpell
selected spell -> display name + "\n\n" + description
matching rows use Highlight state 6; other rows use Normal state 1
gmEffectsUI::SetSelectedSpell @ 0x004B8290:
clicking the selected spell again clears selection
```
The installed local.dat resolves `ID_Effects_Info_SelectASpell` to
`SELECT A SPELL`. Remaining finite durations use `m:ss` below one hour and
`h:mm:ss` at one hour or more.
### End character session