Reformat Graphics.Engine

This commit is contained in:
Kiana Sheibani 2021-12-28 16:38:15 -05:00
parent a53e0204c0
commit 156a338d48

View file

@ -1,3 +1,4 @@
{-# LANGUAGE LambdaCase #-}
module Graphics.Engine where module Graphics.Engine where
import Control.Arrow import Control.Arrow
@ -5,13 +6,26 @@ import Control.Monad.Representable.Reader
import FRP.Yampa import FRP.Yampa
import GOL.Engine import GOL.Engine
import GOL.Space import GOL.Space
import Graphics.Config
import Graphics.Gloss
import Graphics.GlossUtils (InputEvent) import Graphics.GlossUtils (InputEvent)
import Graphics.Gloss.Interface.IO.Game hiding (Event)
import qualified Graphics.Gloss.Interface.IO.Game as G
tickEvent :: SF a (Event ()) data Tick = Tick
tickEvent = repeatedly 1.0 ()
initialSpace :: Space f => f Bool initialSpace :: Space f => f Bool
initialSpace = tabulate $ const False initialSpace = tabulate $ const False
engine :: Space f => GOL f Bool -> SF a (GOL f Bool) engine :: Space f => GOL f Bool -> SF (Event Tick) (GOL f Bool)
engine start = tickEvent >>> accumHoldBy (\s _ -> tick s) start engine = accumHoldBy (\s _ -> tick s)
defaultPeriod = 0.5
repeatTick :: Time -> SF a (Event Tick)
repeatTick t = repeatedly t Tick
tickSignal :: SF (Event Time) (Event Tick)
tickSignal =
arr (\ev -> ((), fmap repeatTick ev))
>>> drSwitch (repeatTick defaultPeriod)