fix(ui): keep spell components in authored foreground
Install examination formula icons as the template root UIRegion image, matching retail ClearImage/SetImage behavior while retaining the authored missing-component overlay. Add the real DAT template fixture and conformance coverage. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
d4ce64f56b
commit
2c3da8e153
14 changed files with 231 additions and 34 deletions
|
|
@ -168,11 +168,14 @@ from a pending object appraisal to a spell releases exactly that appraisal
|
|||
transaction before showing the SpellPanel.
|
||||
The formula-media correction now passes the component's DAT icon DID to
|
||||
`GetSpellComponentIcon` instead of its WCID, so the authored cells render
|
||||
their actual scarab/taper images. ACE characters with component enforcement
|
||||
disabled show the modern scarab/prismatic formula rather than an inactive
|
||||
legacy recipe (IA-21). A per-window authored-geometry revision resets the
|
||||
obsolete saved 545-pixel examination height once to LayoutDesc's 310 x 400
|
||||
extent, preserving its position and all future retail-style user resizing.
|
||||
their actual scarab/taper images. Each image is installed as the authored
|
||||
template root UIRegion's own image, matching retail's `ClearImage`/`SetImage`
|
||||
path instead of sinking a synthetic child behind the window content. ACE
|
||||
characters with component enforcement disabled show the modern
|
||||
scarab/prismatic formula rather than an inactive legacy recipe (IA-21). A
|
||||
per-window authored-geometry revision resets the obsolete saved 545-pixel
|
||||
examination height once to LayoutDesc's 310 x 400 extent, preserving its
|
||||
position and all future retail-style user resizing.
|
||||
|
||||
**Files:** `src/AcDream.Core.Net/Messages/AppraiseInfoParser.cs`;
|
||||
`src/AcDream.App/UI/RetailUiRuntime.cs`;
|
||||
|
|
|
|||
|
|
@ -47,8 +47,10 @@ name/school/mana/duration/range/description and authored appropriate-formula
|
|||
component cells, including live missing-component state. The follow-up resolves
|
||||
those cells through the component icon DID, shows the modern
|
||||
scarab/prismatic formula for ACE characters whose component enforcement is
|
||||
disabled (IA-21), and one-time migrates stale saved examination dimensions to
|
||||
the authored 310 x 400 extent while preserving retail-style later resizing.
|
||||
disabled (IA-21), installs each icon through the shared retained
|
||||
`UIRegion::SetImage` seam so it keeps the authored foreground stack, and
|
||||
one-time migrates stale saved examination dimensions to the authored
|
||||
310 x 400 extent while preserving retail-style later resizing.
|
||||
Its connected visual gate is pending. Slice 3's first connected gate exposed
|
||||
three deeper defects, now corrected: the response enum mislabeled ACE's
|
||||
creature bit `0x0100` and dropped monster packets while retaining the busy
|
||||
|
|
|
|||
|
|
@ -114,9 +114,10 @@ SpellPanel locally, and no spell ID enters global object selection or the
|
|||
status-bar magnifier command. Exact spell fields and the current appropriate
|
||||
formula's authored component cells are automated. The correction resolves
|
||||
component icons by DAT DID, projects scarabs/prismatic tapers when ACE
|
||||
disables component enforcement (IA-21), and resets obsolete saved dimensions
|
||||
disables component enforcement (IA-21), installs each icon as its authored
|
||||
template root's own foreground image, and resets obsolete saved dimensions
|
||||
once to the authored 310 x 400 extent. The Release build with #228's 17
|
||||
tracked test warnings, 3,555 App tests / 3 skips, and 7,986 complete-solution
|
||||
tracked test warnings, 3,557 App tests / 3 skips, and 7,988 complete-solution
|
||||
tests / 5 skips pass; the connected visual gate is pending.
|
||||
Slice 3's first connected gate found and corrected the real remaining defects:
|
||||
ACE creature flag `0x0100` was mislabeled as a weapon profile and left the
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ authored 310 x 400 layout correction are implemented; their connected visual
|
|||
gate is pending. Favorite-spell press-time selection and right-click local
|
||||
SpellPanel examination are implemented. The follow-up now maps
|
||||
component-disabled ACE characters to the modern scarab/prismatic formula,
|
||||
resolves formula icons by their DAT icon DIDs, and migrates stale examination
|
||||
resolves formula icons by their DAT icon DIDs, installs those icons as each
|
||||
authored template root's own foreground image, and migrates stale examination
|
||||
dimensions once to the authored 310 x 400 extent. Their connected visual gate
|
||||
is pending.
|
||||
**Milestone:** M4 prerequisite/preamble.
|
||||
|
|
|
|||
|
|
@ -105,14 +105,21 @@ for each SCID in GetAppropriateSpellFormula(spell):
|
|||
component = SpellComponentTable[SCID]
|
||||
texture = GetSpellComponentIcon(component.iconDID)
|
||||
cell = AddItemFromTemplateList(0x1000032E)
|
||||
cell.icon = texture
|
||||
cell.ClearImage()
|
||||
cell.SetBlitMode(Blit_3Alpha)
|
||||
cell.SetImage(texture)
|
||||
cell.missingOverlay = !ComponentTracker.ComponentIsOwned(component.WCID)
|
||||
|
||||
initial floaty extent = LayoutDesc root extent = 310 x 400 pixels
|
||||
restore user position/size from player UI state
|
||||
```
|
||||
|
||||
The component icon lookup consumes the component's icon DID, not its WCID.
|
||||
`SetImage` replaces the template root UIRegion's own image; retail does not add
|
||||
a separate, negatively layered icon child. Template child `0x10000330` remains
|
||||
the missing-component overlay. `UIRegion::DrawHere @ 0x0069FA30` draws the
|
||||
root's image before its children for this template, preserving the authored
|
||||
icon/overlay foreground stack. The component icon lookup consumes the
|
||||
component's icon DID, not its WCID.
|
||||
acdream's retained-layout persistence carries an authored-geometry revision:
|
||||
when a shipped LayoutDesc extent correction invalidates an older saved size,
|
||||
only width/height reset once; position, visibility, and later user resizing
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue