Sometimes players want to access the options screen in-game (e.g. to adjust their controls). This might be a good feature to add - e.g. could add "O" for Options to the in-game ESC menu (and maybe have an "Options" UI button on the quest selection screen).
Some random technical notes (not fully thought out yet):
- Currently
OptionsScreen is hard-coded to go back to TitleScreen. Instead, we could give it a "continuation" (a function returning a unique_ptr<Screen>) to allow it to go back to InGameScreen or MenuScreen.
- The
OptionsScreen would need to keep the game running in the background - e.g. check what InGameScreen::update does, and replicate it in OptionsScreen::update if necessary. We would also have to keep the GameManager open, keep KnightsClient around, etc.
- When opening options from in-game, we should automatically put the "Show controls for" dropdown on the correct setting (for the current game mode).
- If the control method is changed (action bar controls vs. original Amiga controls) the server needs to be told about this. We can send
CLIENT_SET_ACTION_BAR_CONTROLS again, but currently the server only expects to receive this at game startup. If received mid-game, the server would have to find the relevant Player object and change the action_bar_controls flag on that Player.
Sometimes players want to access the options screen in-game (e.g. to adjust their controls). This might be a good feature to add - e.g. could add "O" for Options to the in-game ESC menu (and maybe have an "Options" UI button on the quest selection screen).
Some random technical notes (not fully thought out yet):
OptionsScreenis hard-coded to go back toTitleScreen. Instead, we could give it a "continuation" (a function returning aunique_ptr<Screen>) to allow it to go back toInGameScreenorMenuScreen.OptionsScreenwould need to keep the game running in the background - e.g. check whatInGameScreen::updatedoes, and replicate it inOptionsScreen::updateif necessary. We would also have to keep theGameManageropen, keepKnightsClientaround, etc.CLIENT_SET_ACTION_BAR_CONTROLSagain, but currently the server only expects to receive this at game startup. If received mid-game, the server would have to find the relevantPlayerobject and change theaction_bar_controlsflag on thatPlayer.