{-# LANGUAGE MultiParamTypeClasses #-}

module Affection.StateMachine where

import Affection.Types

import qualified SDL

class StateMachine a us where
  smLoad   :: a -> Affection us ()
  smUpdate :: a -> Double -> Affection us ()
  smEvent  :: a -> [SDL.EventPayload] -> Affection us ()
  smDraw   :: a -> Affection us ()
  smClean  :: a -> Affection us ()