module Classes.Scene where import Affection import Control.Concurrent.STM -- internal imports import Types.Util import Types.Subsystems 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 -> TMVar Progress -> IO () -- | Query whether loading data is finished. isSceneLoaded :: a -> Affection Bool -- | Run updates on the data given the time elapsed since last frame update :: a -> Double -> Affection () -- | Handle input events onEvents :: a -> TranslatorMessage -> Affection () -- | perform the drawing render :: a -> Affection ()