tracer/src/Init.hs

55 lines
1.1 KiB
Haskell

{-# LANGUAGE ForeignFunctionInterface #-}
module Init where
import Affection as A
import SDL (($=))
import qualified SDL
import qualified Graphics.Rendering.OpenGL as GL
import NanoVG hiding (V2(..), V3(..))
import Linear
import Control.Monad.IO.Class (liftIO)
import Control.Concurrent.STM
import qualified Data.Set as S
import qualified Data.Map.Strict as M
import Data.Ecstasy
import Foreign.C.Types (CInt(..))
import Types
import Floorplan
import Debug.Trace
foreign import ccall unsafe "glewInit"
glewInit :: IO CInt
load :: IO UserData
load = do
_ <- glewInit
nvg <- createGL3 (S.fromList [Antialias, StencilStrokes])
subs <- Subsystems
<$> (Window <$> newTVarIO [])
<*> (Mouse <$> newTVarIO [])
w <- runSystemT defWorld getWorld
let fc = FloorConfig (20, 45) [(5, 5), (30,80)] (40, 90)
floor <- buildHallFloorIO fc
traceIO $ show floor
return UserData
{ state = Menu
, subsystems = subs
, assetImages = M.empty -- FILLME!
, nano = nvg
, uuid = []
, world = w
, stateData = None
}