Repository navigation
feat: the Alt quick menu as OMSI 2's grid of icon tiles, with pages and keys - #3335
Merged
turbo-devv merged 2 commits intoOct 26, 2026
Merged
Conversation
…nd keys The quick menu shows 5x3 square tiles of the icon alone, in OMSI 2's order, with the chosen tile's name under the grid and an arrow to the next page. Lit tiles (route arrows on, a tour driven) are orange as in OMSI 2; tiles the game menu does not offer now are greyed and take no clicks. The arrow keys choose (across pages at the sides), Enter starts, Tab and the page keys turn the page. The second page has the game menu's own lines (camera, options, saving, screenshots, photo mode, skip stop, end the tour...), run through the game menu's code, now game_menu_action.
rafaelkaiz
requested review from
isaacsa2,
thibautgnt and
turbo-devv
as code owners
October 26, 2026 16:31
…ui.rs stays at 1500 lines
Contributor
Test builds for 4f42a2b
|
turbo-devv
approved these changes
Oct 26, 2026
turbo-devv
left a comment
Collaborator
There was a problem hiding this comment.
Looks good: the pause menu's actions move into game_menu_action unchanged, greyed tiles take no clicks on mouse or keyboard, the key handling and paging are covered by tests, CI green. Thanks!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes for the player?
Tapping Alt opens a quick menu that looks and works like OMSI 2's: a 5x3 grid of large square icon tiles in OMSI 2's order, the chosen tile's name under the grid, and an arrow at the bottom right for the next page. Lit tiles (route arrows on, a tour being driven) are orange as in OMSI 2, and tiles that cannot be used right now are greyed. The menu also works from the keyboard.
How to test
Any map and bus. Tap Alt:
Screenshots
What does this change, and why?
Kind::Tilegetsfocusandoff; a tile with no text is drawn as a square of its icon alone (omsi-plugin-ui/src/square.rs), with an accent ring when focused and greyed when off. Tiles are only built by the game, not by Lua plugins.quick_menu.rskeeps the page and the chosen tile, builds the grid and the footer, and handles the keys (game_panel_key) and the hover (from the hit under the cursor, only when the cursor moves, so the keyboard choice is kept while the mouse is still).menu_chooseintogame_menu_action(id)(unchanged otherwise), so the page-2 tiles run exactly the pause menu's code. Which tiles are greyed comes fromgame_menu_items().What could break?
While the quick menu is open, the arrow keys, Enter, Tab and Page Up/Down go to the menu, not to the bus. The pause menu's lines now go through
game_menu_action; its behaviour is unchanged (load, quit and plugin lines stay inmenu_choose). Not tested in VR (the menu is not shown there) or on a server.Performance
No feature with a runtime cost: the panel is laid out again only when it changes (page, choice, lit or greyed tiles).
Checklist
cargo test --workspaceandcargo build --releasepass (tested:omsi-app,omsi-plugin,omsi-plugin-uitests and the Windows release build)A new feature has its performance table filled incrates/omsi-app/locales/app.yml, in every language I can (only existing texts are used)