acdream/tests/AcDream.Core.Tests/CharGen
Erik 834c2547a9 fix(chargen): Campaign CC gate round 1 Batch G — real color wheel (DoColorSpots/DoGradDisk color rendering)
R2-5: retail's gmCGAppearancePage::DoColorSpots/SetSelection/DoGradDisk
paint the nine color swatches and the gradient disc with a real,
computed representative color (PalSet-averaged for Hair/Nose+Mouth+
Skin/Headgear/Shirt/Trousers/Footwear at fixed sample indices
0xd0/0xb0/0x520; direct-Palette for Eyes at 0x103), not the static
authored art acdream showed before this batch.

Ports the full palette-to-RGB pipeline: a new pure Core resolver
(ChargenSwatchColorResolver + IChargenPaletteColorSource) backed by a
new ChargenAppearanceCatalog.TryGetColor reading real Palette dat
objects, pinned against the installed EoR dat. CharacterCreationAppearancePage
recomputes all nine swatches + the gradient disc's tint on every
refresh (part/color/heritage change) and paints them through a new
ChargenSwatchColorTile overlay child — a flat-color-fill approximation
of retail's actual recolored-sprite blit, since neither UiButton
(sealed) nor UiDatElement exposes a per-instance sprite tint today.

Two STOPPED items remain outside this batch's file contract before the
mechanism is visually live: (1) wiring PalSetSource/ClothingTableSource/
PaletteColorSource from CharacterCreationUiController.cs (mirrors the
existing PreviewControl seam); (2) a small additive Tint property on
UiButton/UiDatElement for a byte-true recolor instead of the flat fill.
Also ports Nose/Mouth/Skin's single non-interactive representative
swatch, beyond AP-216/AP-217's original six-part scope.

Register AP-216/AP-217 rewritten (not retired — the two STOPPED items
keep them open). Tests: 11 new Core, 6 new Content live-DAT, 8 new
App-layer fixture. App suite 5321/3 -> 5329/3, Runtime 1735/0
unchanged, zero regressions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-16 14:16:14 +02:00
..
ChargenAppearanceFactoryTests.cs feat(chargen): Campaign CC slice CC6b-PRE — idle loop, rotation, zoom (mount-independent half) 2026-08-15 19:05:56 +02:00
ChargenAttributeMathTests.cs feat(content): Campaign CC CC1 — chargen table reader and typed options model 2026-08-15 12:53:50 +02:00
ChargenNoChoriziteLeakTests.cs docs+fix(chargen): CC1/CC2 review closeout — R2/R3 residuals closed, ledger final 2026-08-15 13:41:37 +02:00
ChargenOptionsTests.cs fix(chargen): CC1 review fix round — Custom is template 0, SkillTable cost fallback, frozen model 2026-08-15 13:33:37 +02:00
ChargenPalSetMathTests.cs feat(chargen): Campaign CC slice CC6a — index→ObjDesc factory + preview renderer foundation 2026-08-15 17:22:06 +02:00
ChargenSkillAdvancementSetTests.cs feat(content): Campaign CC CC1 — chargen table reader and typed options model 2026-08-15 12:53:50 +02:00
ChargenSkillCreditMathTests.cs fix(chargen): CC1 review fix round — Custom is template 0, SkillTable cost fallback, frozen model 2026-08-15 13:33:37 +02:00
ChargenSwatchColorResolverTests.cs fix(chargen): Campaign CC gate round 1 Batch G — real color wheel (DoColorSpots/DoGradDisk color rendering) 2026-08-16 14:16:14 +02:00