packages feed

venzone-1.0.0.0: src/Input.hs

module Input where

import Terminal.Game


data Input = KUp | KDown | KLeft | KRight | KSpace |
             KRestart | KHelp | KExit |
             NoKey
        deriving (Eq, Show)

data Cardinal = N | S | W | E
        deriving (Eq, Show)


-----------
-- Input --
-----------

eventInput :: Event -> Input
eventInput Tick = NoKey
eventInput (KeyPress c)

        | c == 'w' = KUp
        | c == 'z' = KUp -- azerty support
        | c == 's' = KDown
        | c == 'a' = KLeft
        | c == 'q' = KLeft
        | c == 'd' = KRight
        | c == ' ' = KSpace

        | c == 'r' = KRestart
        | c == 'h' = KHelp
        | c == 'l' = KExit

        | otherwise = NoKey


-- WASD
isMovKey :: Input -> Bool
isMovKey k = elem k [KUp, KDown, KLeft, KRight, KSpace]

-- non WASD
isMenuKey :: Input -> Bool
isMenuKey k = elem k [KRestart, KHelp, KExit]

turnAround :: Cardinal -> Cardinal
turnAround N = S
turnAround S = N
turnAround E = W
turnAround W = E