Skip to content

Inventory screen: UI anchor width limit for centred layouts (pairs with ChronicleTwo inventory screen) - #3

Closed
Jeffiest wants to merge 11 commits into
TheMoonPeople:mainfrom
Jeffiest:inventory-screen-2026-10-13
Closed

Jeffiest wants to merge 11 commits into
TheMoonPeople:mainfrom
Jeffiest:inventory-screen-2026-10-13

Conversation

@Jeffiest

@Jeffiest Jeffiest commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Pairs with TheMoonPeople/ChronicleTwo#27 ("Inventory screen: live character over the paused world") (same branch name, inventory-screen-2026-10-13), which pins this commit.

What

UiAnchor::max_aspect (carried in display lists as UiSide::max_aspect). Above zero, an anchored draw moves to the edges of a centred area no wider than that aspect, instead of the window's edges. Zero, the default, keeps today's behaviour, so every existing anchor is unchanged.

Why

ChronicleTwo's inventory screen anchors its panels to the screen edges on wide windows. On ultrawide windows that spreads the layout across the whole width. With max_aspect = 16/9 the inventory keeps its 16:9 layout, centred, while the game world behind it still fills the window.

Testing

  • ChronicleTwo Windows build and CTest: 1302/1302 pass with this commit pinned.
  • Checked by eye in game at 1280x720 and on an ultrawide window.

carrdylan52 and others added 11 commits October 13, 2026 11:07
Compose movement and look from independent device samples without recursive pad reads. Reset latch timing on initialization and shutdown, and advance the display epoch when motion is discarded so presentation does not replay stale input.

Cover simultaneous keyboard/controller look, mouse-bound movement, lifetime resets, released capture and discarded motion in shared keyboard regressions.
Use caller-provided visible presentation vertices and clear rectangles for model composites. Remove tick-bound region metadata because endpoint bounds do not prove coverage of interpolated rotations, skinning or display camera motion.

Require part geometry identity before resynchronizing matched surfaces. Retain upstream scratch-clear behavior and its filtered-outline regression alongside rotating-thin-part and geometry-replacement coverage.
…iness

Keep bounded failed-load keys outside the decoded PCM budget so missing tracks cannot evict playable audio. Release evicted decoded tracks before publishing request readiness, preserving deterministic cache lifetime observations.

Cover repeated missing loads, bounded negative-cache state, decoded-budget retention and readiness ordering.
…verage

Prefix suites that create a graphics device with GfxGpu so consumers can label and exclude them consistently. Include the upstream filtered-outline test in the same classification and describe shared pairing, lifetime and presentation regressions.
Use plain renderer options in CPU recording-reservation checks while retaining all state, capacity and lifetime assertions. Remove the standalone four-light draw duplicated by the indexed/immediate test with the same 50,60,30 oracle.
Define _XOPEN_SOURCE 700 before system headers in the cooperative thread translation unit on Apple, unless the build already supplied it. This exposes getcontext, makecontext and swapcontext in the macOS SDK without changing Windows or Linux preprocessing.
Directory iteration order is unspecified and differs on APFS, so a host could
pick a newer matching stage over the one it had just released. Sorting the
candidates keeps stage reuse deterministic on every platform.
winit's macOS keyboard handling calls the Text Input Source and keyboard
layout functions (TISCopyCurrentKeyboardLayoutInputSource,
TISGetInputSourceProperty, kTISPropertyUnicodeKeyLayoutData, LMGetKbdType),
which live in Carbon. Linking the static Rust archive from C++ needs the
framework listed explicitly, like the other system frameworks.
`SDL_Event event{}` only initialises the union's first member, so the key
fields the test then sets sit beside indeterminate bytes; with stack
pattern initialisation `key.repeat` reads as set and F12 never releases
capture. SDL_zero clears the whole event.
UiAnchor::max_aspect (carried as UiSide::max_aspect): above zero, an anchored draw moves to the edges of a centred area no wider than that aspect instead of the window's edges, so a layout made for 16:9 stays together on ultrawide windows. Zero keeps today's behaviour, so every existing anchor is unchanged.
Adubbz pushed a commit that referenced this pull request Oct 18, 2026
UiAnchor::max_aspect, carried in display lists as UiSide::max_aspect: above
zero, an anchored draw moves to the edges of a centred area no wider than that
aspect instead of the window's, so a layout made for 16:9 stays together on
ultrawide windows. UiAnchor::Side takes it as an optional argument. Zero keeps
the existing behaviour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Adubbz

Adubbz commented Oct 19, 2026

Copy link
Copy Markdown
Member

Will close this as I think it's be superseded

@Adubbz Adubbz closed this Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants