fix(studio): Character footer — title was centered in the full-height (H=55) box, overlapping the lines

A position dump (the apparatus, after 5 speculative passes) showed the footer title element is H=55
(the whole footer box) in the dat; centering "Select an Attribute to Improve" in it landed the text
dead-center (~y572), painting over "Skill Credits Available:" (y565) and "Unassigned Experience:"
(y582). Constrain the title to a thin line (H=18) at the footer top + drop its anchors so the
per-frame stretch doesn't re-grow it. All three State-A lines now read cleanly. Diagnosed from data,
not guessing — exactly the apparatus-over-cdb call.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-26 01:04:43 +02:00
parent 5aa65dbd43
commit 31666c0e85

View file

@ -655,7 +655,16 @@ public static class CharacterStatController
// and its background sprite would cover the line-1/line-2 elements at local y=20/37.
// The controller owns the footer visual; the dat sprite is superfluous here.
var titleEl = ByPos(0f, 0f, FooterTitleId);
if (titleEl is not null) titleEl.BackgroundSprite = 0;
if (titleEl is not null)
{
titleEl.BackgroundSprite = 0;
// The dat title element is H=55 (the full footer box). Centering the title text in it
// lands dead-center (~y572), overlapping line-1/line-2 (y565/y582 — confirmed by a
// position dump). Constrain it to a thin line at the footer top, and drop its anchors
// so the per-frame stretch pass doesn't re-grow it back to 55.
titleEl.Height = 18f;
titleEl.Anchors = AnchorEdges.None;
}
LabelProvider(titleEl, datFont, Body, () =>
{
if (sel[0] < 0) return "Select an Attribute to Improve";