Fix dependency loop
This commit is contained in:
parent
b7278d6afc
commit
f529fc5237
25 changed files with 251 additions and 199 deletions
|
@ -2,35 +2,22 @@ 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.Input.Core (InputHandler, composeInputHandlers, handleAnyKey)
|
||||
import RPGEngine.Data (Game (state), State (..))
|
||||
import RPGEngine.Data.Default (defaultSelector)
|
||||
import RPGEngine.Data.Level (getLevelList)
|
||||
|
||||
------------------------------ Exported ------------------------------
|
||||
|
||||
handleInputMenu :: InputHandler Game
|
||||
handleInputMenu = composeInputHandlers [
|
||||
handleAnyKey selectLevel
|
||||
handleAnyKey (\game -> game{ state = startLevelSelection })
|
||||
]
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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
|
||||
startLevelSelection :: State
|
||||
startLevelSelection = LevelSelection {
|
||||
levelList = getLevelList,
|
||||
selector = defaultSelector
|
||||
}
|
Reference in a new issue