Cleanup, fix menu lock on restarting level after game over
This commit is contained in:
+15
-16
@@ -4,8 +4,7 @@ module Dodge.Menu
|
||||
, pushScreen
|
||||
, pauseMenu
|
||||
, gameOverMenu
|
||||
)
|
||||
where
|
||||
) where
|
||||
import LensHelp
|
||||
import Dodge.Menu.OptionType
|
||||
import Dodge.Menu.PushPop
|
||||
@@ -22,8 +21,8 @@ import Dodge.LevelGen
|
||||
--import Control.Lens
|
||||
import System.Random
|
||||
|
||||
slTitleOptions :: String -> [MenuOption] -> ScreenLayer
|
||||
slTitleOptions title ops = slTitleOptionsEff title ops (popScreen . writeConfig)
|
||||
pauseMenu :: ScreenLayer
|
||||
pauseMenu = slTitleOptionsEff "PAUSED" pauseMenuOptions (return . unpause)
|
||||
|
||||
slTitleOptionsEff :: String -> [MenuOption] -> (Universe -> IO (Maybe Universe)) -> ScreenLayer
|
||||
slTitleOptionsEff title ops eff = OptionScreen
|
||||
@@ -33,6 +32,18 @@ slTitleOptionsEff title ops eff = OptionScreen
|
||||
, _scOptionFlag = NormalOptions
|
||||
}
|
||||
|
||||
pauseMenuOptions :: [MenuOption]
|
||||
pauseMenuOptions =
|
||||
[ Toggle ScancodeN (return . startNewGame) (const "NEW LEVEL")
|
||||
, Toggle ScancodeR (return . Just . loadSaveSlot LevelStartSlot) (const "RESTART")
|
||||
, Toggle ScancodeO (pushScreen optionMenu ) (const "OPTIONS")
|
||||
, Toggle ScancodeC (pushScreen displayControls) (const "CONTROLS")
|
||||
, InvisibleToggle ScancodeEscape (return . const Nothing)
|
||||
]
|
||||
|
||||
slTitleOptions :: String -> [MenuOption] -> ScreenLayer
|
||||
slTitleOptions title ops = slTitleOptionsEff title ops (popScreen . writeConfig)
|
||||
|
||||
optionMenu :: ScreenLayer
|
||||
optionMenu = slTitleOptionsEff "OPTIONS" optionsOptions popScreen
|
||||
|
||||
@@ -69,7 +80,6 @@ gameplayMenuOptions =
|
||||
, makeBoolOption ScancodeS show_sound "SHOW VISUAL SOUNDS"
|
||||
]
|
||||
|
||||
|
||||
soundMenu :: ScreenLayer
|
||||
soundMenu = slTitleOptions
|
||||
"OPTIONS:VOLUME"
|
||||
@@ -114,17 +124,6 @@ gameOverMenu = OptionScreen
|
||||
, _scOptionFlag = GameOverOptions
|
||||
}
|
||||
|
||||
pauseMenu :: ScreenLayer
|
||||
pauseMenu = slTitleOptionsEff "PAUSED" pauseMenuOptions (return . unpause)
|
||||
|
||||
pauseMenuOptions :: [MenuOption]
|
||||
pauseMenuOptions =
|
||||
[ Toggle ScancodeN (return . startNewGame) (const "NEW LEVEL")
|
||||
, Toggle ScancodeR (return . Just . loadSaveSlot LevelStartSlot) (const "RESTART")
|
||||
, Toggle ScancodeO (pushScreen optionMenu ) (const "OPTIONS")
|
||||
, Toggle ScancodeC (pushScreen displayControls) (const "CONTROLS")
|
||||
, InvisibleToggle ScancodeEscape (return . const Nothing)
|
||||
]
|
||||
startNewGame :: Universe -> Maybe Universe
|
||||
startNewGame w = Just $ w
|
||||
& menuLayers .~ [WaitScreen (const "GENERATING...") 1]
|
||||
|
||||
Reference in New Issue
Block a user