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 =
|
|
|
|
|
if #attackHeld input orelse #jumpHeld input then
|
|
|
|
|
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
|
|
|
|
|
{mode = mode, userKeys = userKeys}
|
|
|
|
|
end
|
|
|
|
|
| OPTIONS_BUTTON =>
|
|
|
|
|
let
|
2025-02-20 06:13:33 +00:00
|
|
|
val mode =
|
2025-02-20 06:00:49 +00:00
|
|
|
if #attackHeld input orelse #jumpHeld input then
|
|
|
|
|
(* placeholder: go to configure screen instead once that is implemented *)
|
2025-02-20 14:25:20 +00:00
|
|
|
GameType.OPTIONS OptionsType.initial
|
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
|
|
|
|
|
{mode = mode, userKeys = userKeys}
|
|
|
|
|
end
|
2025-02-19 03:39:36 +00:00
|
|
|
end
|