packages feed

yampa-sdl2-0.0.1.1: src/YampaSDL2/Backend/Input.hs

module YampaSDL2.Backend.Input
  (inputAction) where

import qualified SDL
import Control.Concurrent
import FRP.Yampa

inputAction :: MVar DTime -> Bool -> IO (DTime, Maybe (Event SDL.EventPayload))
inputAction lastInteraction _canBlock = do
  currentTime <- SDL.time
  dt <- (currentTime -) <$> swapMVar lastInteraction currentTime
  threadDelay $ round (10000 - dt) -- 10ms pause for roughly 100 FPS
  mEvent <- SDL.pollEvent
  return (dt, Event . SDL.eventPayload <$> mEvent)