2021-02-18 17:31:20 +00:00
|
|
|
{-# LANGUAGE NegativeLiterals #-}
|
|
|
|
|
2021-02-11 22:40:00 +00:00
|
|
|
module Action where
|
|
|
|
|
|
|
|
import Graphics.Vty.Input
|
|
|
|
import Data.Maybe
|
2021-02-18 17:31:20 +00:00
|
|
|
import Linear.V2
|
2021-02-11 22:40:00 +00:00
|
|
|
|
2021-02-18 17:31:20 +00:00
|
|
|
data Action = Move (V2 Int)
|
2021-02-11 22:40:00 +00:00
|
|
|
| ExitGame
|
|
|
|
| None
|
|
|
|
|
|
|
|
bindings :: [(Event, Action)]
|
|
|
|
bindings =
|
2021-02-18 17:31:20 +00:00
|
|
|
[ (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)
|
2021-02-14 13:32:24 +00:00
|
|
|
, (EvKey (KChar 'q') [], ExitGame)
|
2021-02-11 22:40:00 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
eventToAction :: Event -> Action
|
2021-02-18 19:36:11 +00:00
|
|
|
eventToAction e = fromMaybe None (lookup e bindings)
|