fix(chargen): Campaign CC gate round 1 re-test 2 — R3-4/R3-7 scrollbar thumb
Retail authors TWO distinct UIElement_Scrollbar thumb shapes. DatWidgetFactory.BuildScrollbar's existing vertical-thumb detection was built against chat's own scrollbar (0x10000012) — a 3-slice composite where the thumb child carries no media of its own and three Type-3 grandchildren supply the top-cap/middle/bottom-cap sprites. The chargen Skills listbox scrollbar (0x100003f8), Summary's OVERVIEW listbox scrollbar (0x10000401), the Summary how-to box's scrollbar (0x100002e7), and the shade slider (0x10000321) all instead author a SIMPLE single-sprite thumb: the same structural child (Type 1, id 1, not the inc/dec button) carries its OWN direct media and has ZERO children — the 3-slice-only search found nothing for this shape, so every Thumb*Sprite stayed 0 regardless of overflow. Fixed by falling back to the thumb's own DefaultImage when the slice search finds nothing — additive; a thumb WITH real slice children (chat) is unaffected. This one fix covers R3-4's three listbox thumbs, R3-7, and — as a natural consequence of the same structural shape — the shade-slider indicator half of R3-5(c); no separate fix was needed there. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
7f6e93033f
commit
c9313edc63
2 changed files with 128 additions and 0 deletions
|
|
@ -315,6 +315,31 @@ public static class DatWidgetFactory
|
|||
if (slices.Length > 0) bar.ThumbTopSprite = DefaultImage(slices[0]);
|
||||
if (slices.Length > 1) bar.ThumbSprite = DefaultImage(slices[1]);
|
||||
if (slices.Length > 2) bar.ThumbBotSprite = DefaultImage(slices[^1]);
|
||||
|
||||
// R3-4/R3-7 (Campaign CC gate round 1 re-test 2): retail authors
|
||||
// TWO distinct thumb shapes for UIElement_Scrollbar (Type 11) —
|
||||
// chat's own scrollbar (0x10000012) is the 3-slice composite the
|
||||
// block above was built against (the thumb CHILD carries no media
|
||||
// of its own; three Type-3 grandchildren supply the top-cap/
|
||||
// middle/bottom-cap sprites) — but the chargen Skills listbox
|
||||
// (0x100003f8), Summary's OVERVIEW listbox (0x10000401), and the
|
||||
// Summary how-to box (0x100002e7 under 0x10000404) all author a
|
||||
// SIMPLE single-sprite thumb instead: the SAME structural child
|
||||
// (Type 1, id 1, not the inc/dec button) carries its OWN direct
|
||||
// Normal/Normal_rollover/Normal_pressed media and has ZERO
|
||||
// children (live-DAT-probe-confirmed against all three — no
|
||||
// slice grandchildren to find, so `slices` above is always
|
||||
// empty for this shape and every Thumb*Sprite stayed 0,
|
||||
// matching the reported "track+arrows render, no thumb"
|
||||
// symptom). <see cref="UiScrollbar.OnDraw"/> already falls back
|
||||
// to a single tiled `ThumbSprite` blit when the cap sprites are
|
||||
// unset (`ThumbTopSprite != 0 && ThumbBotSprite != 0` gate), so
|
||||
// the only missing piece is feeding it the thumb's OWN media
|
||||
// when it has no slice children — additive: a thumb WITH real
|
||||
// slice children (chat) is unaffected since `slices.Length == 0`
|
||||
// is false for that shape.
|
||||
if (slices.Length == 0)
|
||||
bar.ThumbSprite = DefaultImage(thumb);
|
||||
}
|
||||
|
||||
return bar;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue