haskanoid-0.1.2: src/Main.hs
{-# LANGUAGE Arrows #-}
import Control.Monad.IfElse
import FRP.Yampa as Yampa
import Game
import Display
import Input
import Graphics.UI.Extra.SDL
-- TODO: Use MaybeT or ErrorT to report errors
main :: IO ()
main = do
initializeDisplay
timeRef <- initializeTimeRef
controllerRef <- initializeInputDevices
res <- loadResources
awhen res $ \res' -> do
reactimate (initGraphs >> senseInput controllerRef)
(\_ -> do
-- Get clock and new input
dtSecs <- fmap milisecsToSecs $ senseTimeRef timeRef
mInput <- senseInput controllerRef
return (dtSecs, Just mInput)
)
(\_ e -> render res' e >> return False)
wholeGame