2025-02-19 03:39:36 +00:00
|
|
|
structure TitleUpdate =
|
|
|
|
|
struct
|
|
|
|
|
open TitleType
|
|
|
|
|
|
2025-02-21 08:58:45 +00:00
|
|
|
fun update (titleState, input: FrameInputType.t, userKeys, time) =
|
2025-02-20 05:46:00 +00:00
|
|
|
case #focus titleState of
|
|
|
|
|
START_BUTTON =>
|
|
|
|
|
let
|
|
|
|
|
val mode =
|
2025-02-22 04:53:51 +00:00
|
|
|
if CoreKey.containsAttack (userKeys, #newKeys input) then
|
2025-02-20 05:46:00 +00:00
|
|
|
GameType.LEVEL LevelType.initial
|
2025-02-20 06:13:33 +00:00
|
|
|
else
|
2025-02-20 06:00:49 +00:00
|
|
|
let
|
|
|
|
|
val titleState =
|
2025-02-20 06:13:33 +00:00
|
|
|
if #downHeld input then {focus = OPTIONS_BUTTON}
|
|
|
|
|
else titleState
|
2025-02-20 06:00:49 +00:00
|
|
|
in
|
|
|
|
|
GameType.TITLE titleState
|
|
|
|
|
end
|
|
|
|
|
in
|
2025-02-21 18:32:48 +00:00
|
|
|
{mode = mode, userKeys = userKeys, saveKeys = false}
|
2025-02-20 06:00:49 +00:00
|
|
|
end
|
|
|
|
|
| OPTIONS_BUTTON =>
|
|
|
|
|
let
|
2025-02-20 06:13:33 +00:00
|
|
|
val mode =
|
2025-02-22 04:53:51 +00:00
|
|
|
if CoreKey.containsAttack (userKeys, #newKeys input) then
|
2025-02-21 18:18:39 +00:00
|
|
|
let val options = OptionsType.init userKeys
|
|
|
|
|
in GameType.OPTIONS options
|
|
|
|
|
end
|
2025-02-20 06:00:49 +00:00
|
|
|
else
|
|
|
|
|
let
|
|
|
|
|
val titleState =
|
2025-02-20 06:13:33 +00:00
|
|
|
if #upHeld input then {focus = START_BUTTON} else titleState
|
2025-02-20 06:00:49 +00:00
|
|
|
in
|
|
|
|
|
GameType.TITLE titleState
|
|
|
|
|
end
|
2025-02-20 05:46:00 +00:00
|
|
|
in
|
2025-02-21 18:32:48 +00:00
|
|
|
{mode = mode, userKeys = userKeys, saveKeys = false}
|
2025-02-20 05:46:00 +00:00
|
|
|
end
|
2025-02-19 03:39:36 +00:00
|
|
|
end
|