36 lines
No EOL
1.1 KiB
Haskell
36 lines
No EOL
1.1 KiB
Haskell
module RPGEngine.Input.Menu
|
|
( handleInputMenu
|
|
) where
|
|
|
|
import RPGEngine.Input.Core ( InputHandler, composeInputHandlers, handleAnyKey, ListSelector (..) )
|
|
|
|
import RPGEngine.Data ( Game (..), State (..), StateBase (..) )
|
|
import RPGEngine.Render.LevelSelection (renderLevelSelection)
|
|
import RPGEngine.Input.LevelSelection (handleInputLevelSelection)
|
|
import RPGEngine.Data.Level (getLevelList)
|
|
|
|
------------------------------ Exported ------------------------------
|
|
|
|
handleInputMenu :: InputHandler Game
|
|
handleInputMenu = composeInputHandlers [
|
|
handleAnyKey selectLevel
|
|
]
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
selectLevel :: Game -> Game
|
|
selectLevel g@Game{ state = state } = g{ state = defaultLevelSelection }
|
|
|
|
defaultLevelSelection :: State
|
|
defaultLevelSelection = LevelSelection { base = base, selector = defaultSelector, levelList = levels }
|
|
where base = StateBase {
|
|
renderer = renderLevelSelection,
|
|
inputHandler = handleInputLevelSelection
|
|
}
|
|
levels = getLevelList
|
|
|
|
defaultSelector :: ListSelector
|
|
defaultSelector = ListSelector {
|
|
selection = 0,
|
|
selected = False
|
|
} |