Fix controller menu focus and expose light-grid preloading - #152
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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. |
There was a problem hiding this comment.
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 👍 / 👎.
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 1fixes, 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:
menu_controller_navigation.py, including reverse traversal, wrap, hidden-page focus, hover cleanup, mouse handoff, and binding-order assertionsgame/airdefense1startup on OpenGL and Vulkan, with engine render-target screenshots and normal exitsHardware 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.