From 54b28db249c464c5dc9556eab49e3622dba67d18 Mon Sep 17 00:00:00 2001 From: jgk Date: Mon, 22 Mar 2021 22:40:11 +0100 Subject: [PATCH] Implement basic config file --- app/Main.hs | 6 ++++-- config.json | 2 +- src/Loop.hs | 7 ++++--- src/Picture/Preload.hs | 13 +++++++------ src/Preload.hs | 24 +++++++----------------- 5 files changed, 23 insertions(+), 29 deletions(-) diff --git a/app/Main.hs b/app/Main.hs index 5a0e2591b..a71ef686d 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -3,6 +3,7 @@ module Main where import Loop import Shader import Shapes +import LoadConfig import Dodge.Prototypes import Dodge.Data @@ -45,10 +46,11 @@ ppt = [(0,0),(-0.50,0),(0.20,0.25)] main :: IO () main = do -- loadedSounds <- loadSounds + (sizex,sizey) <- loadConfig setupLoop "windowName" - 800 600 - doPreload + sizex sizey + (doPreload >>= resizeSpareFBO sizex sizey) cleanUpPreload (initializeWorld $ generateFromTree lev1 $ initWorld) ( \preData w -> do diff --git a/config.json b/config.json index 1ef1b6633..37e3afe4f 100644 --- a/config.json +++ b/config.json @@ -1,4 +1,4 @@ { - "windowxsize": 800, + "windowxsize": 600, "windowysize": 600 } diff --git a/src/Loop.hs b/src/Loop.hs index 2032d935c..f9ea9ca9e 100644 --- a/src/Loop.hs +++ b/src/Loop.hs @@ -15,19 +15,20 @@ import Preload import Control.Lens ((.~),(&),(+~)) +winConfig :: Int -> Int -> WindowConfig winConfig x y = defaultWindow { windowGraphicsContext = OpenGLContext (defaultOpenGL { glProfile = Core Normal 4 3 , glColorPrecision = V4 8 8 8 8 } ) - , windowInitialSize = V2 x y + , windowInitialSize = V2 (fromIntegral x) (fromIntegral y) , windowResizable =True } setupLoop :: String - -> CInt - -> CInt + -> Int + -> Int -> IO (PreloadData a) -> (PreloadData a -> IO ()) -> world diff --git a/src/Picture/Preload.hs b/src/Picture/Preload.hs index 7bfc118d5..8d30080d7 100644 --- a/src/Picture/Preload.hs +++ b/src/Picture/Preload.hs @@ -27,6 +27,7 @@ data RenderData = RenderData , _listShaders :: [FullShader RenderType] , _spareFBO :: FramebufferObject , _fboTexture :: TextureObject + , _fboRenderbufferObject :: RenderbufferObject } makeLenses ''RenderData @@ -73,7 +74,7 @@ preloadRender = do >>= addUniforms ["perpMat"] -- framebuffer for lighting - (fbo,fboTO) <- setupFramebuffer + (fbo,fboTO,fboRBO) <- setupFramebuffer -- reset to default framebuffer, ready for drawing direct to screen bindFramebuffer Framebuffer $= defaultFramebufferObject @@ -86,14 +87,15 @@ preloadRender = do , _wallFaceShader = wlShad , _backgroundShader = bgShad , _fullscreenShader = fsShad - , _spareFBO = fbo - , _fboTexture = fboTO + , _spareFBO = fbo + , _fboTexture = fboTO + , _fboRenderbufferObject = fboRBO } --------------------end preloadRender -setupFramebuffer :: IO (FramebufferObject, TextureObject) +setupFramebuffer :: IO (FramebufferObject, TextureObject,RenderbufferObject) setupFramebuffer = do fboName <- genObjectName bindFramebuffer Framebuffer $= fboName @@ -113,8 +115,7 @@ setupFramebuffer = do fboStatus <- framebufferStatus Framebuffer putStrLn $ show fboStatus - return (fboName, fboTO) - + return (fboName, fboTO, fboRBO) cleanUpRenderPreload :: RenderData -> IO () cleanUpRenderPreload pd = do diff --git a/src/Preload.hs b/src/Preload.hs index 1348d071c..715e9b937 100644 --- a/src/Preload.hs +++ b/src/Preload.hs @@ -1,28 +1,18 @@ -{-# LANGUAGE TemplateHaskell #-} module Preload + ( module Preload + , module Preload.Data + , module Preload.Update + ) where +import Preload.Data +import Preload.Update + import Picture.Preload import Sound.Preload import Control.Lens import GHC.Word (Word32) -data PreloadData a = PreloadData - { _renderData :: RenderData - , _soundData :: SoundData a - , _currentTime :: Word32 - , _renderTime :: Word32 - , _renderLighting :: Word32 - , _renderPicture :: Word32 - , _simTime :: Word32 - , _mixerTime :: Word32 - , _idleTime :: Word32 - , _gcTime :: Word32 - , _pokeTime :: Word32 - } - -makeLenses ''PreloadData - doPreload :: IO (PreloadData a) doPreload = do sData <- preloadSound