Restructuring, #9
This commit is contained in:
parent
2055ef234e
commit
dab6fadad4
41 changed files with 941 additions and 680 deletions
|
@ -1,21 +1,26 @@
|
|||
-- Allows to create a massive inputHandler that can handle anything
|
||||
-- after you specify what you want it to do.
|
||||
|
||||
module RPGEngine.Input.Core
|
||||
( InputHandler(..)
|
||||
( InputHandler
|
||||
, ListSelector(..)
|
||||
|
||||
, composeInputHandlers
|
||||
, handle
|
||||
, handleKey
|
||||
, handleAnyKey
|
||||
) where
|
||||
|
||||
import Graphics.Gloss.Interface.IO.Game
|
||||
import Graphics.Gloss.Interface.Pure.Game
|
||||
( Event(EventKey), Key(..), KeyState(Down), SpecialKey )
|
||||
|
||||
----------------------------- Constants ------------------------------
|
||||
|
||||
type InputHandler a = Event -> (a -> a)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
data ListSelector = ListSelector {
|
||||
selection :: Int,
|
||||
selected :: Bool
|
||||
}
|
||||
|
||||
------------------------------ Exported ------------------------------
|
||||
|
||||
-- Compose multiple InputHandlers into one InputHandler that handles
|
||||
-- all of them.
|
||||
|
@ -26,8 +31,8 @@ composeInputHandlers (ih:ihs) ev a = composeInputHandlers ihs ev (ih ev a)
|
|||
-- Handle any event
|
||||
handle :: Event -> (a -> a) -> InputHandler a
|
||||
handle (EventKey key _ _ _) = handleKey key
|
||||
-- handle (EventMotion _) = undefined
|
||||
-- handle (EventResize _) = undefined
|
||||
-- handle (EventMotion _) = undefined -- TODO
|
||||
-- handle (EventResize _) = undefined -- TODO
|
||||
handle _ = const (const id)
|
||||
|
||||
-- Handle a event by pressing a key
|
||||
|
@ -41,7 +46,7 @@ handleAnyKey :: (a -> a) -> InputHandler a
|
|||
handleAnyKey f (EventKey _ Down _ _) = f
|
||||
handleAnyKey _ _ = id
|
||||
|
||||
----------------------------------------------------------------------
|
||||
--------------------------- Help functions ---------------------------
|
||||
|
||||
handleCharKey :: Char -> (a -> a) -> InputHandler a
|
||||
handleCharKey c1 f (EventKey (Char c2) Down _ _)
|
||||
|
@ -53,4 +58,4 @@ handleSpecialKey :: SpecialKey -> (a -> a) -> InputHandler a
|
|||
handleSpecialKey sk1 f (EventKey (SpecialKey sk2) Down _ _)
|
||||
| sk1 == sk2 = f
|
||||
| otherwise = id
|
||||
handleSpecialKey _ _ _ = id
|
||||
handleSpecialKey _ _ _ = id
|
Reference in a new issue