feat(D.5.2): IconComposer.ResolveEffectDid (effect submap 0x10000005)
Add effect-overlay submap resolve: EnsureEffectSubMap walks the portal MasterMap (0x25000000) → EnumIDMap 0x10000005 → submap 0x25000009; ResolveEffectDid(effects) maps LowestSetBit(effects)+1 → RenderSurface DID with fallback to index 0x21. Golden test validates all 6 cases (Magical/Poisoned/BoostHealth/BoostStamina/Nether/zero) against the live dat. Retail ref: IconData::RenderIcons 0x0058d180. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e7b6e83cf8
commit
75ac51ac23
2 changed files with 66 additions and 0 deletions
|
|
@ -101,4 +101,29 @@ public class IconComposerTests
|
|||
Assert.Equal(0x060011D5u, composer.ResolveUnderlayDid(ItemType.Jewelry));
|
||||
Assert.Equal(0x060011D4u, composer.ResolveUnderlayDid(ItemType.None));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ResolveEffectDid_goldenValues_matchDat()
|
||||
{
|
||||
var datDir = ResolveDatDir();
|
||||
if (datDir is null) return; // dats absent (CI) — skip cleanly
|
||||
|
||||
using var dats = new DatCollection(datDir, DatAccessType.Read);
|
||||
var composer = new IconComposer(dats, null!);
|
||||
|
||||
// Golden values (live dat, MasterMap 0x25000000 → effect submap 0x25000009;
|
||||
// index = LowestSetBit(UiEffects)+1, fallback 0x21):
|
||||
// Magical (0x0001) → idx 1 → 0x060011CA
|
||||
// Poisoned (0x0002) → idx 2 → 0x060011C6
|
||||
// BoostHealth (0x0004) → idx 3 → 0x06001B05
|
||||
// BoostStamina (0x0010) → idx 5 → 0x06001B06
|
||||
// Nether (0x1000) → idx 13 (absent) → fallback 0x21 → 0x060011C5
|
||||
// none (0x0000) → idx 0 (zero) → fallback 0x21 → 0x060011C5
|
||||
Assert.Equal(0x060011CAu, composer.ResolveEffectDid(0x0001u));
|
||||
Assert.Equal(0x060011C6u, composer.ResolveEffectDid(0x0002u));
|
||||
Assert.Equal(0x06001B05u, composer.ResolveEffectDid(0x0004u));
|
||||
Assert.Equal(0x06001B06u, composer.ResolveEffectDid(0x0010u));
|
||||
Assert.Equal(0x060011C5u, composer.ResolveEffectDid(0x1000u));
|
||||
Assert.Equal(0x060011C5u, composer.ResolveEffectDid(0x0000u));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue