pang-a-lambda-0.2.0.0: Experiments/splitballs/Main.hs
import Control.Applicative
import Control.Concurrent
import Control.Monad
import Control.Monad.IfElse
import Data.IORef
import Debug.Trace
import FRP.Yampa as Yampa
import Text.Printf
import Game
import Display
import Input
import Graphics.UI.Extra.SDL
main :: IO ()
main = do
initializeDisplay
timeRef <- initializeTimeRef
controllerRef <- initializeInputDevices
res <- loadResources
initGraphs res
reactimate (senseInput controllerRef)
(\_ -> do
-- Get clock and new input
mInput <- senseInput controllerRef
dtSecs <- senseTime timeRef mInput
-- trace ("Time : " ++ printf "%.5f" dtSecs) $
return (if controllerPause mInput then 0 else dtSecs, Just mInput)
)
(\_ (e,c) -> do render res e
return (controllerExit c)
)
(wholeGame &&& arr id)
senseTime :: IORef Int -> Controller -> IO DTime
senseTime timeRef = \mInput ->
let tt = if controllerSlow mInput then (/10) else id
tt1 = if controllerSuperSlow mInput then (/100) else tt
tt2 = if controllerFast mInput then (*10) else tt1
in (tt2 . milisecsToSecs) <$> senseTimeRef timeRef