fix(plugin-ui): plugin did icons use retail's keyed-white recolor, not a raw blit
Owner report 2026-09-06: MossTank's shelf icon (0x06002C41) drew with a white ring. DAT icon art reserves pure-white-opaque pixels as the recolor key that retail IconData::RenderIcons (0x0058d180) replaces per pixel through SurfaceWindow::ReplaceColor (0x004415b0) from the effect tile — the solid-black 0x21 tile when there are no effects. The inventory already does this through IconComposer; the plugin did sink (markup <icon did>, <button icon>, <list icons> and the shelf button) blitted the art raw. RetailMarkupIconResolver.ResolveDid now hands out IconComposer.GetKeyedIcon — the drag-icon composite (base art + effects==0 recolor, no overlay, no underlay), sharing that cache — so did icons look like a mundane inventory item does. The resolver no longer needs a TextureCache. KeyedIconInstalledDatTests pins both halves against the real DAT: the raw art carries the key, the composite carries none, and ResolveDid returns exactly the keyed composite. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
f2d7562c86
commit
e61edd946b
8 changed files with 137 additions and 19 deletions
|
|
@ -201,6 +201,13 @@ and `item` are almost always bindings (`spell="{SpellId}"`,
|
|||
resolving to 0, or the resolver returning no texture, draws nothing — never a
|
||||
placeholder, never a throw.
|
||||
|
||||
A `did` icon is **not blitted raw**. It is drawn the way retail draws every
|
||||
icon it composites (`IconData::RenderIcons` with no overlay and no effects):
|
||||
the art's pure-white pixels are the DAT's "recolor me" key and are replaced
|
||||
with the solid-black fallback tile, exactly as a mundane item in the inventory.
|
||||
Raw art shows a white ring around the icon (Decal's `HudPictureBox` draws it
|
||||
that way); acdream does not. Art without any pure-white pixel is unaffected.
|
||||
|
||||
### `<icon>`
|
||||
|
||||
```xml
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue