module Input where import Char exposing (toCode, KeyCode) import Keyboard exposing (keysDown, arrows, isDown) import Random import Time exposing (Time, fps) import Signal exposing (..) import Set exposing (Set) import Model.Vec2 exposing (Vec2) type alias Input = { dir : Vec2 , inputKeysDown : Set KeyCode , delta : Time } getInput : Signal Input getInput = let delta = fps 24 input = map3 Input (map recordIntToVec2 arrows) keysDown delta in sampleOn delta input recordIntToVec2 : {x : Int, y : Int} -> Vec2 recordIntToVec2 {x, y} = { x = toFloat x , y = toFloat y }