-- Input for RPG-Engine module RPGEngine.Input ( handleAllInput ) where import RPGEngine.Data import RPGEngine.Data.State import RPGEngine.Input.Core import RPGEngine.Input.Player import Graphics.Gloss.Interface.IO.Game ---------------------------------------------------------------------- -- Handle all input for RPG-Engine handleAllInput :: InputHandler Game handleAllInput ev g@Game{ state = Playing } = handlePlayInputs ev g handleAllInput ev g = handleAnyKey setNextState ev g ---------------------------------------------------------------------- -- Input for 'Playing' state handlePlayInputs :: InputHandler Game handlePlayInputs = composeInputHandlers [ -- Pause the game handleKey (Char 'p') (\game -> game{ state = Pause }), -- Player movement handleKey (SpecialKey KeyUp) $ movePlayer North, handleKey (SpecialKey KeyRight) $ movePlayer East, handleKey (SpecialKey KeyDown) $ movePlayer South, handleKey (SpecialKey KeyLeft) $ movePlayer West, handleKey (Char 'w') $ movePlayer North, handleKey (Char 'd') $ movePlayer East, handleKey (Char 's') $ movePlayer South, handleKey (Char 'a') $ movePlayer West ] -- Go to the next stage of the Game setNextState :: Game -> Game setNextState game = game{ state = newState } where newState = nextState $ state game