Files
sml-projects/fcore/options/options-update.sml

44 lines
1.7 KiB
Standard ML
Raw Normal View History

structure OptionsUpdate =
struct
open OptionsType
fun default (options, userKeys) =
{mode = GameType.OPTIONS options, userKeys = userKeys}
fun withFocus (newFocus, userKeys) =
{mode = GameType.OPTIONS {focus = newFocus}, userKeys = userKeys}
fun update (options, input: FrameInputType.t, userKeys) =
case #focus options of
LEFT_KEY =>
if #downHeld input then withFocus (RIGHT_KEY, userKeys)
else default (options, userKeys)
| RIGHT_KEY =>
if #upHeld input then withFocus (LEFT_KEY, userKeys)
else if #downHeld input then withFocus (UP_KEY, userKeys)
else default (options, userKeys)
| UP_KEY =>
if #upHeld input then withFocus (RIGHT_KEY, userKeys)
else if #downHeld input then withFocus (DOWN_KEY, userKeys)
else default (options, userKeys)
| DOWN_KEY =>
if #upHeld input then withFocus (UP_KEY, userKeys)
else if #downHeld input then withFocus (JUMP_KEY, userKeys)
else default (options, userKeys)
| JUMP_KEY =>
if #upHeld input then withFocus (DOWN_KEY, userKeys)
else if #downHeld input then withFocus (ATTACK_KEY, userKeys)
else default (options, userKeys)
| ATTACK_KEY =>
if #upHeld input then withFocus (JUMP_KEY, userKeys)
else if #downHeld input then withFocus (SAVE_BUTTON, userKeys)
else default (options, userKeys)
| SAVE_BUTTON =>
if #upHeld input then withFocus (ATTACK_KEY, userKeys)
else if #downHeld input then withFocus (CANCEL_BUTTON, userKeys)
else default (options, userKeys)
| CANCEL_BUTTON =>
if #upHeld input then withFocus (SAVE_BUTTON, userKeys)
else default (options, userKeys)
end