2020-10-16 23:53:25 +00:00
|
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module StateMachine where
|
|
|
|
|
|
|
|
import Affection
|
|
|
|
|
|
|
|
import Control.Monad (void)
|
|
|
|
|
|
|
|
-- internal imports
|
|
|
|
|
|
|
|
import Types
|
|
|
|
|
|
|
|
import State.Loading
|
2020-10-17 08:35:25 +00:00
|
|
|
import State.MainGame
|
2020-10-16 23:53:25 +00:00
|
|
|
|
|
|
|
instance StateMachine GameData State where
|
|
|
|
|
2020-10-17 08:35:25 +00:00
|
|
|
smLoad Loading = initLoad
|
|
|
|
smLoad (MainGame Test) = mainGameLoad
|
2020-10-16 23:53:25 +00:00
|
|
|
smLoad x = error ("State load not yet implemented: " <> show x)
|
|
|
|
|
|
|
|
smUpdate Loading = initLoadUpdate
|
2020-10-17 08:35:25 +00:00
|
|
|
smUpdate (MainGame Test) = mainGameUpdate
|
2020-10-16 23:53:25 +00:00
|
|
|
smUpdate x = error ("State update not yet implemented: " <> show x)
|
|
|
|
|
|
|
|
smDraw Loading = initLoadDraw
|
2020-10-17 08:35:25 +00:00
|
|
|
smDraw (MainGame Test) = mainGameDraw
|
2020-10-16 23:53:25 +00:00
|
|
|
smDraw x = error ("State draw not yet implemented: " <> show x)
|
|
|
|
|
|
|
|
smEvent _ gd evs = do
|
|
|
|
let Subsystems w m k _ = gameSubsystems gd
|
|
|
|
void . (consumeSDLEvents k) =<<
|
|
|
|
consumeSDLEvents m =<<
|
|
|
|
consumeSDLEvents w evs
|
|
|
|
|
|
|
|
smClean x = error ("State clean not yet implemented: " <> show x)
|