roguelike/src/Action.hs

28 lines
709 B
Haskell

{-# LANGUAGE NegativeLiterals #-}
module Action where
import Graphics.Vty.Input
import Data.Maybe
import Linear.V2
data Action = Move (V2 Int)
| ExitGame
| None
bindings :: [(Event, Action)]
bindings =
[ (EvKey (KChar 'k') [], Move $ V2 0 -1)
, (EvKey (KChar 'j') [], Move $ V2 0 1)
, (EvKey (KChar 'h') [], Move $ V2 -1 0)
, (EvKey (KChar 'l') [], Move $ V2 1 0)
, (EvKey (KChar 'y') [], Move $ V2 -1 -1)
, (EvKey (KChar 'u') [], Move $ V2 1 -1)
, (EvKey (KChar 'b') [], Move $ V2 -1 1)
, (EvKey (KChar 'n') [], Move $ V2 1 1)
, (EvKey (KChar 'q') [], ExitGame)
]
eventToAction :: Event -> Action
eventToAction e = fromMaybe None (lookup e bindings)