Add graphics menu options

This commit is contained in:
jgk
2021-04-28 14:10:47 +02:00
parent 1b4eac2da7
commit 5a8555d5a0
2 changed files with 69 additions and 56 deletions
+31 -24
View File
@@ -18,33 +18,38 @@ import SDL
handlePressedKeyInMenu :: MenuLayer -> Scancode -> World -> Maybe World
handlePressedKeyInMenu mState scode w = case mState of
LevelMenu _ -> case scode of
ScancodeEscape -> Nothing
ScancodeO -> goToOptionMenu w
ScancodeC -> goToControls w
_ -> startLevel w
ScancodeEscape -> Nothing
ScancodeO -> pushMenu OptionMenu w
ScancodeC -> pushMenu ControlList w
_ -> startLevel w
PauseMenu -> case scode of
ScancodeEscape -> Nothing
ScancodeR -> return $ fromMaybe w $ _storedLevel w
ScancodeN -> startNewGame
ScancodeO -> goToOptionMenu w
ScancodeC -> goToControls w
_ -> unpause w
ScancodeEscape -> Nothing
ScancodeR -> return $ fromMaybe w $ _storedLevel w
ScancodeN -> startNewGame
ScancodeO -> pushMenu OptionMenu w
ScancodeC -> pushMenu ControlList w
_ -> unpause w
GameOverMenu -> case scode of
ScancodeEscape -> Nothing
ScancodeR -> Just $ fromMaybe w $ _storedLevel w
ScancodeN -> startNewGame
ScancodeO -> goToOptionMenu w
ScancodeC -> goToControls w
_ -> Just w
ScancodeEscape -> Nothing
ScancodeR -> Just $ fromMaybe w $ _storedLevel w
ScancodeN -> startNewGame
ScancodeO -> pushMenu OptionMenu w
ScancodeC -> pushMenu ControlList w
_ -> Just w
OptionMenu -> case scode of
ScancodeY -> Just $ sw & config . volume_master %~ dec
ScancodeU -> Just $ sw & config . volume_master %~ inc
ScancodeH -> Just $ sw & config . volume_sound %~ dec
ScancodeJ -> Just $ sw & config . volume_sound %~ inc
ScancodeN -> Just $ sw & config . volume_music %~ dec
ScancodeM -> Just $ sw & config . volume_music %~ inc
_ -> Just $ w & menuLayers %~ tail
& sideEffects %~ (saveConfig (_config w) :)
ScancodeV -> pushMenu SoundOptionMenu w
ScancodeG -> pushMenu GraphicsOptionMenu w
_ -> popMenu w
SoundOptionMenu -> case scode of
ScancodeY -> Just $ sw & config . volume_master %~ dec
ScancodeU -> Just $ sw & config . volume_master %~ inc
ScancodeH -> Just $ sw & config . volume_sound %~ dec
ScancodeJ -> Just $ sw & config . volume_sound %~ inc
ScancodeN -> Just $ sw & config . volume_music %~ dec
ScancodeM -> Just $ sw & config . volume_music %~ inc
_ -> popMenu $ w & sideEffects %~ (saveConfig (_config w) :)
GraphicsOptionMenu -> case scode of
_ -> popMenu w
ControlList -> Just $ w & menuLayers %~ tail
_ -> Just w
where
@@ -53,6 +58,8 @@ handlePressedKeyInMenu mState scode w = case mState of
startLevel = unpause . storeLevel
dec x = max 0 (x - 0.1)
inc x = min 1 (x + 0.1)
pushMenu ml w = Just $ w & menuLayers %~ (ml :)
popMenu w = Just $ w & menuLayers %~ tail
goToOptionMenu w = Just $ w & menuLayers %~ (OptionMenu :)
goToControls w = Just $ w & menuLayers %~ (ControlList :)
sw = w & sideEffects %~ (setVol (_config w) : )