aboutsummaryrefslogtreecommitdiff
path: root/src/Input.elm
blob: 9a88db6d7151aac6f39c6bda617802f0b5bc0b63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module Input where

import Char exposing (toCode)
import Keyboard exposing (KeyCode, 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 25
      input =
        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
  }