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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -42,6 +42,6 @@ struct
|
||||
, fallingEnemies = fallingEnemies
|
||||
}
|
||||
in
|
||||
{mode = GameType.LEVEL mode, userKeys = userKeys}
|
||||
{mode = GameType.LEVEL mode, userKeys = userKeys, saveKeys = false}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -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) =
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ()
|
||||
|
||||
Reference in New Issue
Block a user