Skip to content

Fix controller menu focus and expose light-grid preloading - #152

Merged
themuffinator merged 1 commit into
mainfrom
codex/community-input-lightgrid
Sep 4, 2026
Merged

Fix controller menu focus and expose light-grid preloading#152
themuffinator merged 1 commit into
mainfrom
codex/community-input-lightgrid

Conversation

@themuffinator

Copy link
Copy Markdown
Owner

Discussion #145 reports that a stationary mouse keeps its hover active while controller focus moves, and reverse navigation can behave inconsistently. Discussion #146 reports severe traversal stutter that r_lightGridPreload 1 fixes, but the setting is hard to discover.

This change gives menus transient controller ownership: the first controller action clears mouse hover and hides the pointer, while mouse motion or a click restores pointer control. Focus traversal now follows one visible ordered list in either direction, skips hidden pages, and wraps reliably. Binding capture still receives the original gamepad event.

Display > Post FX now includes a localized Preload Light Grids choice and concise help covering the next-map-load timing, longer loading, and video-memory cost. Streaming remains the default. The additional content is included in full and compact scroll bounds so the bottom sizing controls remain reachable.

Resolves discussions #145 and #146.

Validation:

  • Full MSVC x64 engine and SP/MP GameLib build; staged install
  • menu_controller_navigation.py, including reverse traversal, wrap, hidden-page focus, hover cleanup, mouse handoff, and binding-order assertions
  • Settings registry, localization encoding, match-control UI, and SDL3 input parity checks
  • Windowed SP game/airdefense1 startup on OpenGL and Vulkan, with engine render-target screenshots and normal exits
  • OpenGL Settings > Display > Post FX visual inspection; Vulkan parsed the same GUI without errors

Hardware note: the behavior test does not emulate an Xbox controller at the OS layer; reporter confirmation on the original device remains useful after the merged build is available.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 4, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-04T18:12:38.112209Z 2268444 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@themuffinator
themuffinator merged commit d6bec90 into main Sep 4, 2026
19 of 23 checks passed
@themuffinator
themuffinator deleted the codex/community-input-lightgrid branch September 4, 2026 18:10

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2268444643

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- **Stock maps no longer report or expose known startup gaps.** The engine first honours any loose or mod-provided versions of the three omitted brown-fluid effect images and the omitted large water-splash sample, then uses shape- and family-compatible media that did ship with Quake 4. Generated TrueType atlases also bind their uploaded images on first parse, wide loading backgrounds and generated image caches remain reliable from deeply nested save locations, and rigid bodies that the stock game deliberately clamps or forces to rest remain visible as developer diagnostics without being mislabeled as unresolved warnings.
- **Autosaving no longer costs you the level you were playing.** A save could stop with a `refusing non-finite` error part way through writing, which unloaded the running map and left nothing to go back to. The value at fault belonged to a menu or HUD animation rather than to gameplay: an unset GUI variable was being read before anything had written it. Those variables now start from a defined value, and a cosmetic one that still arrives out of range costs a frame of colour or position instead of the save. Gameplay state is still checked as strictly as before.
- **Saves from older 0.12 development builds load again, and saves that cannot load are refused before they cost you the level you were playing.** Two player liquid fields were added to the save six days apart, but a single check decided both were present, so saves written in between read a field their file does not contain and failed part way through restoring after the running map had already been unloaded. Each field is now matched to the build that introduced it. Saves too old for this build are turned away immediately, with a message naming which build wrote them, and you stay in the game you were playing. New saves use one deterministic class-frame layout in debug and release builds.
- **Saves from older 0.12 development builds load again, and saves that cannot load are refused before they cost you the level you were playing.** Two player liquid fields were added to the save six days apart, but a single check decided both were present, so saves written in between read a field their file does not contain and failed part way through restoring — after the running map had already been unloaded. Each field is now matched to the build that introduced it. Saves too old for this build are turned away immediately, with a message naming which build wrote them, and you stay in the game you were playing. New saves use one deterministic class-frame layout in debug and release builds.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the corrupted em dashes in the release notes

This commit changes two existing em dashes into the mojibake sequences — here and in the multiplayer-function-keys entry on line 27, so the player-facing v0.12.0 notes will display corrupted text when published. Restore both characters as Unicode em dashes and preserve the file as UTF-8.

AGENTS.md reference: AGENTS.md:L35-L36

Useful? React with 👍 / 👎.

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.

1 participant