-
Notifications
You must be signed in to change notification settings - Fork 27
Real in-game setting system #206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Replace F1 -> F7 for show and hide FPS because twitter (X) was useless |
F7 is too hard to press |
but F1 for in-game settings stays |
|
If I am understanding this correctly this current PR proposes to add a toggle for FPS inside the new in-game settings menu, as opposed to rebinding it to yet another key (such as F7), is that correct? |
Yes, it changes the behavior of F1 |
- The guard around the cache directory creation in BMSLoudnessAnalyzer is removed to make sure changing `normalize chart volume` option in-game work. - `Label` now adapts builder pattern instead of overload constructors. To make things more clear IconLabel is removed too. - `Tile` no longer gives two icon slots, instead, icons are forced to be placed at left, and right side is for optional description. Vertically stacked `Tile`s are now aligned correctly at left side by inserting spaces. Please note that **icons don't have same width**, so `iconLabelBuilder` is forcing all labels it produces have same width `15F`. - All the audio options in launcher are now moved inside settings menu
- Removed the field `width` in Label because it simply won't work. - Tile's icon is now inside of a column which has constant width(16f) to ensure vertically stacked Tile widgets have aligned looking.
- Song manager menu is now removed from F5 menu. All its capability is now served inside F1 setting menu - The `sort by last played date` feature should be implemented as an option in `sort strategies`, but it's hard to tweak things works right when an unexisted value is persisted into user's config file. - Continuation of the last one, the checkbox of `last played sort` is not persisted too. Users need to re-check it manually after restarting game.
|
Update: the basic functionality has been implemented. I'm open to feedback and contributions regarding terminology, prompts, layout, and other miscellaneous content. |
Motivation
Beatoraja exposes its configurable options in its launcher, which is known to be hard to use & no explanation. And most of the tabs are disabled after launching the game. To allow user change options in-game, beatoraja created many specific events for skin makers to use. Most of the popular skins have features like a panel that arranges some options. However, what options are presented is now fully controlled by the skin makers: what if the option that you want isn't presented in the skin you're using, what if we add more and more options in ED, what if the skin I want to use doesn't have this feature at all?
Previously, we have an idea of bringing the
lift,hidden,lanecoversettings in-game. I assembled them in mod menu'sMisc Setting Menu, which is simply adding them all and blindly stacking them together. This proposal could be viewed as the extension of that.This proposal can also unlock some other ideas like:
What can be done in this system
Implementation details
Currently, it overrides the F1 key to open the menu.
The code could be roughly split into 2 pieces:
For reviewer and further dev:
ImGuiKeyHelper: getting the last pressed key and translating it into libgdx's keycode. Libgdx's input processor is frozen whenSettingsMenuis at front.pollfunction, to allow user close the setting menu by pressing F1 again.font24.