packages feed

aztecs-sdl-0.2.0.0: examples/Keyboard.hs

{-# LANGUAGE Arrows #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeApplications #-}

module Main where

import Control.Arrow ((>>>))
import Data.Aztecs
import qualified Data.Aztecs.Access as A
import qualified Data.Aztecs.Query as Q
import Data.Aztecs.SDL (KeyboardInput, Window (..))
import qualified Data.Aztecs.SDL as SDL
import qualified Data.Aztecs.System as S

setup :: System () ()
setup = S.queue . const . A.spawn_ $ bundle Window {windowTitle = "Aztecs"}

update :: System () ()
update = S.all (Q.fetch @_ @KeyboardInput) >>> S.task print

main :: IO ()
main =
  runSchedule_ $
    schedule SDL.setup
      >>> schedule setup
      >>> forever (schedule SDL.update >>> schedule update >>> schedule SDL.draw)