tracer/src/StateMachine.hs
2018-06-25 23:59:12 +02:00

42 lines
774 B
Haskell

{-# LANGUAGE MultiParamTypeClasses #-}
module StateMachine where
import Affection
import Types
import Load
import MainGame
instance StateMachine State UserData where
smLoad Main = loadMap
smLoad Load = loadLoad
smUpdate Main = updateMap
smUpdate Load = updateLoad
smDraw Main = drawMap
smDraw Load = drawLoad
smEvent _ evs = do
Subsystems w m k <- subsystems <$> getAffection
_ <- consumeSDLEvents k =<< consumeSDLEvents w =<< consumeSDLEvents m evs
return ()
smClean _ = do
ud <- getAffection
let Subsystems w m k = subsystems ud
toClean = uuid ud
mapM_ (\u -> do
partUnSubscribe w u
partUnSubscribe m u
partUnSubscribe k u
) toClean
putAffection ud
{ uuid = []
}