fix(ui): complete retail indicator detail panels
Port the authored effect row template, remaining-time and selection details, synchronize the full gmPanelUI child geometry, and route the burden indicator to Character Information panel 3. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
a96767ba6d
commit
d1d603105f
24 changed files with 3696 additions and 147 deletions
|
|
@ -152,6 +152,13 @@ public sealed class UiText : UiElement, IUiDatStateful
|
|||
/// <summary>The scroll model — also read by the linked UiScrollbar.</summary>
|
||||
public UiScrollable Scroll { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Keeps a view that is already at the end pinned there when content or
|
||||
/// geometry changes. Chat uses the default; top-oriented reports such as
|
||||
/// Character Information disable it.
|
||||
/// </summary>
|
||||
public bool PreserveEndOnLayout { get; set; } = true;
|
||||
|
||||
private const float WheelLines = 1f; // lines advanced per wheel notch (retail = 1 line per notch)
|
||||
|
||||
// ── Cached layout from the last OnDraw, so OnEvent hit-tests the SAME geometry ──
|
||||
|
|
@ -448,7 +455,7 @@ public sealed class UiText : UiElement, IUiDatStateful
|
|||
Scroll.SetExtents(
|
||||
(int)MathF.Ceiling(contentH),
|
||||
(int)MathF.Floor(innerH),
|
||||
preserveEnd: true);
|
||||
preserveEnd: PreserveEndOnLayout);
|
||||
|
||||
// Overflow keeps the UiScrollable convention: ScrollY=0 is TOP/oldest and
|
||||
// ScrollY=MaxScroll is BOTTOM/newest. Fitting DAT-authored content instead
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue