From 31666c0e85ad86a1b8df80583d23602025e102ee Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 01:04:43 +0200 Subject: [PATCH] =?UTF-8?q?fix(studio):=20Character=20footer=20=E2=80=94?= =?UTF-8?q?=20title=20was=20centered=20in=20the=20full-height=20(H=3D55)?= =?UTF-8?q?=20box,=20overlapping=20the=20lines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- src/AcDream.App/UI/Layout/CharacterStatController.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index a1816504..6be5fc4f 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -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";