fix(combat): restore retail power bar layers
Preserve the authored gray track, trained-Recklessness range, live bright charge meter, and independent desired-power thumb while keeping Speed and Power over gray side regions. Correct retail text justification value 2 to left alignment and retain direct RenderSurface decoding in the texture inspection tool used to verify the assets. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
0f2d98c501
commit
256c1930bd
18 changed files with 200 additions and 32 deletions
|
|
@ -102,7 +102,7 @@ Concrete subclasses (`DatReaderWriter.Types.*`):
|
|||
|-----|-------------------|---------|-----------|
|
||||
| `0x1A` | `ArrayBaseProperty` (contains `DataIdBaseProperty`) | **Font DID** — array with one item; the inner `DataIdBaseProperty.Value` is the font dat object id | `UIElement_Text::SetFontDIDHelper(this, 0x1a, ...)` @`0x46829e` |
|
||||
| `0x1B` | `ArrayBaseProperty` (contains `ColorBaseProperty`) | **Font color** — array with one item; `ColorARGB {R,G,B,A}` | `UIElement_Text::SetFontColorHelper(this, 0x1b, ...)` @`0x4682c2` |
|
||||
| `0x14` | `EnumBaseProperty` | **Horizontal justification** | `UIElement_Text::SetHorizontalJustification` @`0x467200` |
|
||||
| `0x14` | `EnumBaseProperty` | **Horizontal justification** — `1` center, `3/5` right, every other value (including constructor default `2`) left | `UIElement_Text::CalcJustification` @`0x467260` |
|
||||
| `0x15` | `EnumBaseProperty` | **Vertical justification** | `UIElement_Text::SetVerticalJustification` @`0x467230` |
|
||||
| `0x1C` / `0x1D` | `ArrayBaseProperty` | Tag font color / tag font | (secondary font style for in-text tags) |
|
||||
| `0x16` | `BoolBaseProperty` | Some text flag | |
|
||||
|
|
|
|||
|
|
@ -171,10 +171,26 @@ applies the associated player option.
|
|||
track = scrollbar DirectState image
|
||||
thumb = structural child element 1
|
||||
live power fill = nested meter child 0x10000050 / image child 2
|
||||
trained Recklessness range = nested meter child 0x100005EF
|
||||
```
|
||||
|
||||
These roles are identified by authored element ids, never by resolved width.
|
||||
The combat thumb is a 12x14 green jewel; inheritance reflow can make its
|
||||
effective child geometry wide enough that a width heuristic incorrectly tiles
|
||||
the jewel as the background. The base track is `0x060074CA`, thumb
|
||||
`0x06001923`, and live red fill `0x06001200`.
|
||||
`0x06001923`, live bright-red fill `0x06001200`, and the trained-
|
||||
Recklessness dark-red range `0x0600715E`.
|
||||
|
||||
The three visual layers remain separate. The gray scrollbar track spans the
|
||||
whole authored control. The dark-red Recklessness range is visible only when
|
||||
skill `0x32` has advancement class `Trained` or higher; retail re-evaluates it
|
||||
when scalar message `0x0A` is received. The meter fill is driven independently
|
||||
by `RecvNotice_SetPowerbarLevel`, while the green thumb is driven by
|
||||
`RecvNotice_DesiredAttackPowerChanged`.
|
||||
|
||||
The Speed and Power text rectangles are later siblings of the scrollbar. Their
|
||||
inner edges define the visible meter interval so the authored gray track stays
|
||||
behind both captions. Speed's raw property `0x14` value is `2`, which is left
|
||||
justification: `UIElement_Text::CalcJustification @ 0x00467260` centers only
|
||||
value `1`, right-aligns values `3` and `5`, and treats every other value as left.
|
||||
Power uses right justification.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue