Add graphics menu options
This commit is contained in:
+31
-24
@@ -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) : )
|
||||
|
||||
Reference in New Issue
Block a user