fix(D.2b): Slice 2 — Slots caption white + left-aligned (visual gate)

User gate: the "Slots" toggle caption was gold (should be white) and centered
(should sit at the left, before the slots). UiButton gains a LabelAlignment
(Center default / Left); the paperdoll caption is set white + Left-aligned.
The retail checkbox box (green-checked / circle-unchecked) + the exact pose
are the two remaining pieces, done next.

Build + full App suite green (596).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-06-24 22:31:44 +02:00
parent 8ee3d89feb
commit 594942f127
2 changed files with 14 additions and 4 deletions

View file

@ -122,12 +122,13 @@ public sealed class PaperdollController : IItemListDragHandler
{ {
slotsBtn.OnClick = () => { _viewState.Toggle(); ApplyView(); }; slotsBtn.OnClick = () => { _viewState.Toggle(); ApplyView(); };
// The dat element has no face sprite, so without a label the button is invisible. Give it a // The dat element has no face sprite, so without a label the button is invisible. Give it a
// "Slots" caption (gold, like the chat Send button) so it's findable + clickable. // left-aligned WHITE "Slots" caption (retail is white, not gold) so it's findable + clickable.
if (datFont is not null) if (datFont is not null)
{ {
slotsBtn.Label = "Slots"; slotsBtn.Label = "Slots";
slotsBtn.LabelFont = datFont; slotsBtn.LabelFont = datFont;
slotsBtn.LabelColor = new System.Numerics.Vector4(1f, 0.92f, 0.72f, 1f); slotsBtn.LabelColor = System.Numerics.Vector4.One; // white (was gold)
slotsBtn.LabelAlign = UiButton.LabelAlignment.Left; // sit at the left, before the slots
} }
} }

View file

@ -47,6 +47,13 @@ public sealed class UiButton : UiElement
/// <summary>Label color (default white).</summary> /// <summary>Label color (default white).</summary>
public Vector4 LabelColor { get; set; } = Vector4.One; public Vector4 LabelColor { get; set; } = Vector4.One;
/// <summary>Horizontal alignment of <see cref="Label"/>. Center (default) for normal buttons;
/// Left for the paperdoll "Slots" caption that sits at the left edge, before the slots.</summary>
public LabelAlignment LabelAlign { get; set; } = LabelAlignment.Center;
/// <summary>Label horizontal alignment options.</summary>
public enum LabelAlignment { Center, Left }
/// <summary> /// <summary>
/// Active state name, runtime-settable (e.g. Max/Min toggling Normal ↔ Minimized). /// Active state name, runtime-settable (e.g. Max/Min toggling Normal ↔ Minimized).
/// Matches <see cref="UiDatElement.ActiveState"/>. /// Matches <see cref="UiDatElement.ActiveState"/>.
@ -106,8 +113,10 @@ public sealed class UiButton : UiElement
if (Label is { Length: > 0 } label && LabelFont is { } lf) if (Label is { Length: > 0 } label && LabelFont is { } lf)
{ {
float tx = (Width - lf.MeasureWidth(label)) * 0.5f; float tx = LabelAlign == LabelAlignment.Left
float ty = (Height - lf.LineHeight) * 0.5f; ? 3f // small left pad (room for a future checkbox box)
: (Width - lf.MeasureWidth(label)) * 0.5f; // centered (default)
float ty = (Height - lf.LineHeight) * 0.5f;
ctx.DrawStringDat(lf, label, tx, ty, LabelColor); ctx.DrawStringDat(lf, label, tx, ty, LabelColor);
} }
} }