module Input where import Keyboard import Random import RandomValues (RandomValues) import Vec2 (Vec2) type Input = { dir : Vec2 , delta : Time , randomValues : RandomValues } getInput : Signal Input getInput = let dtSignal = delta dirSignal = lift recordIntToVec2 Keyboard.arrows randomFloatsSignal = Random.floatList (lift (\_ -> 3) dtSignal) randomValuesSignal = lift floatsToRandomValues randomFloatsSignal in sampleOn dtSignal <| Input <~ dirSignal ~ dtSignal ~ randomValuesSignal delta : Signal Time delta = lift (\ms -> ms) (fps 25) recordIntToVec2 : {x : Int, y : Int} -> Vec2 recordIntToVec2 {x, y} = { x = toFloat x , y = toFloat y } floatsToRandomValues : [Float] -> RandomValues floatsToRandomValues [enemyAngle, enemyX, enemyY] = { enemyAngle = enemyAngle , enemyX = enemyX , enemyY = enemyY }