{-# LANGUAGE ExistentialQuantification #-} module Scenes.Scene where import Affection import qualified SDL class Scene a where -- | Perform initialization and output a (possibly empty) data container. initScene :: IO a -- | Load actual data into the initialized container. loadScene :: a -> Affection () -- | Query whether loading data is finished. isSceneLoaded :: a -> Affection Bool -- | Run updates on the data given the time elapsed since last frame update :: a -> Float -> Affection () -- | Handle input events onEvents :: a -> [SDL.EventPayload] -> Affection () -- | perform the drawing render :: a -> Affection ()