{-# LANGUAGE OverloadedStrings #-} module Main where import Affection import qualified Data.Text as T import qualified SDL import Control.Concurrent.STM import qualified Data.Map.Strict as M import Linear -- internal imports import Types instance Affectionate GameData where preLoop _ = return () handleEvents _ _ = return () update _ _ = return () draw _ = return () loadState = Main.init cleanUp _ = return () hasNextStep = liftIO . atomically . readTVar . gameRunning main :: IO () main = do let config = AffectionConfig { initComponents = All , windowTitle = "Pituicat" , windowConfigs = [ ( 0 , SDL.defaultWindow { SDL.windowInitialSize = V2 800 600 , SDL.windowResizable = True , SDL.windowGraphicsContext = SDL.OpenGLContext SDL.defaultOpenGL { SDL.glProfile = SDL.Core SDL.Normal 3 3 } } , SDL.Windowed ) ] } :: AffectionConfig GameData withAffection config init :: IO GameData init = GameData <$> newTVarIO Loading <*> (Subsystems <$> (SubWindow <$> newTVarIO []) <*> (SubMouse <$> newTVarIO []) <*> (SubKeyboard <$> newTVarIO []) <*> (SubTranslator <$> newTVarIO []) ) <*> newTVarIO (M.fromList []) <*> newTVarIO True