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 }