add 'saveKeys' boolean to GameType.game_type, which should tell us to assign the new userKeys record to the InputState (which is implemented), and should also tell us to convert the keys to a string and save it to controls.config

This commit is contained in:
2025-02-21 18:32:48 +00:00
parent e1fb4004dd
commit e6b0a5f37f
6 changed files with 24 additions and 13 deletions

View File

@@ -5,7 +5,7 @@ sig
| TITLE of TitleType.title_type
| OPTIONS of OptionsType.options_type
type game_type = {userKeys: CoreKey.user_key, mode: mode}
type game_type = {mode: mode, userKeys: CoreKey.user_key, saveKeys: bool}
val init: CoreKey.user_key -> game_type
end
@@ -17,10 +17,10 @@ struct
| TITLE of TitleType.title_type
| OPTIONS of OptionsType.options_type
type game_type = {userKeys: CoreKey.user_key, mode: mode}
type game_type = {mode: mode, userKeys: CoreKey.user_key, saveKeys: bool}
fun init userKeys =
let val mode = TITLE TitleType.initial
in {mode = mode, userKeys = userKeys}
in {mode = mode, userKeys = userKeys, saveKeys = false}
end
end

View File

@@ -4,7 +4,7 @@ struct
fun update (game: GameType.game_type, input, time) =
let
val {mode, userKeys} = game
val {mode, userKeys, saveKeys = _} = game
in
case mode of
LEVEL level => LevelUpdate.update (level, input, userKeys, time)

View File

@@ -42,6 +42,6 @@ struct
, fallingEnemies = fallingEnemies
}
in
{mode = GameType.LEVEL mode, userKeys = userKeys}
{mode = GameType.LEVEL mode, userKeys = userKeys, saveKeys = false}
end
end

View File

@@ -20,7 +20,7 @@ struct
, tempKeys = tempKeys
}
in
{mode = GameType.OPTIONS options, userKeys = userKeys}
{mode = GameType.OPTIONS options, userKeys = userKeys, saveKeys = false}
end
fun onSelected (options, input: FrameInputType.t, userKeys, time) =
@@ -56,7 +56,7 @@ struct
, tempKeys = userKeys
}
in
{mode = GameType.OPTIONS options, userKeys = userKeys}
{mode = GameType.OPTIONS options, userKeys = userKeys, saveKeys = false}
end
fun moveFocusUp (options: OptionsType.options_type, newFocus, userKeys, time) =
@@ -81,7 +81,7 @@ struct
, tempKeys = userKeys
}
in
{mode = GameType.OPTIONS options, userKeys = userKeys}
{mode = GameType.OPTIONS options, userKeys = userKeys, saveKeys = false}
end
fun moveFocusDown
@@ -104,7 +104,7 @@ struct
, tempKeys = userKeys
}
in
{mode = GameType.OPTIONS options, userKeys = userKeys}
{mode = GameType.OPTIONS options, userKeys = userKeys, saveKeys = false}
end
fun select (options: OptionsType.options_type, userKeys) =
@@ -118,7 +118,7 @@ struct
, tempKeys = userKeys
}
in
{mode = GameType.OPTIONS options, userKeys = userKeys}
{mode = GameType.OPTIONS options, userKeys = userKeys, saveKeys = false}
end
fun deselect (options: OptionsType.options_type, userKeys) =
@@ -132,7 +132,7 @@ struct
, tempKeys = userKeys
}
in
{mode = GameType.OPTIONS options, userKeys = userKeys}
{mode = GameType.OPTIONS options, userKeys = userKeys, saveKeys = false}
end
fun withLeftKeys (newLeft, userKeys: CoreKey.user_key) =

View File

@@ -18,7 +18,7 @@ struct
GameType.TITLE titleState
end
in
{mode = mode, userKeys = userKeys}
{mode = mode, userKeys = userKeys, saveKeys = false}
end
| OPTIONS_BUTTON =>
let
@@ -35,6 +35,6 @@ struct
GameType.TITLE titleState
end
in
{mode = mode, userKeys = userKeys}
{mode = mode, userKeys = userKeys, saveKeys = false}
end
end

View File

@@ -286,6 +286,16 @@ struct
| OPTIONS options => drawOptions (shellState, options)
end
fun saveKeys game =
let val () = InputState.setControls (#userKeys game)
in ()
end
fun runEffects game =
let val () = if #saveKeys game then saveKeys game else ()
in ()
end
fun helpLoop (shellState as {window, ...}: t, game) =
case Glfw.windowShouldClose window of
false =>
@@ -298,6 +308,7 @@ struct
val game = GameUpdate.update (game, input, time)
val shellState = drawMode (shellState, game)
val () = runEffects game
val _ = Glfw.swapBuffers window
val _ = Glfw.pollEvents ()