summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/MenuState.fs
diff options
context:
space:
mode:
Diffstat (limited to 'src/LivingVillage.Desktop/MenuState.fs')
-rw-r--r--src/LivingVillage.Desktop/MenuState.fs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/LivingVillage.Desktop/MenuState.fs b/src/LivingVillage.Desktop/MenuState.fs
index 452d233..2848e22 100644
--- a/src/LivingVillage.Desktop/MenuState.fs
+++ b/src/LivingVillage.Desktop/MenuState.fs
@@ -153,6 +153,11 @@ module MenuState =
let openControls (state: MenuState) : MenuState =
{ state with Page = Controls; Selected = 0; ReturnPage = state.Page; Error = None }
+ /// P key: open the full key list as a pause-help page. The simulation is paused while
+ /// the page is open; the caller keeps the previous control and restores it on exit.
+ let enterPauseHelp (control: SimulationControl) (state: MenuState) : MenuState * SimulationControl =
+ openControls state, { control with Paused = true }
+
let showLoadError (message: string) (state: MenuState) : MenuState =
{ state with Page = LoadError; Selected = 0; ReturnPage = MainMenu; Error = Some message }
@@ -161,6 +166,11 @@ module MenuState =
| Playing -> { state with Page = Playing; Selected = 0; Error = None }
| _ -> openMain state
+ /// Leaving the pause-help page returns to the page it was opened from and restores
+ /// the exact simulation control the player had before.
+ let exitPauseHelp (original: SimulationControl) (state: MenuState) : MenuState * SimulationControl =
+ returnFromSubpage state, original
+
let private confirmMain (state: MenuState) : MenuState * MenuCommand =
match selectedItem state with
| ContinueItem -> enterGame state, ContinueGame