Load window size from config into world

This commit is contained in:
jgk
2021-03-22 23:06:19 +01:00
parent e296e5d841
commit 257e60e4e8
3 changed files with 15 additions and 21 deletions
+5 -11
View File
@@ -34,25 +34,15 @@ import qualified SDL as SDL
import qualified SDL.Mixer as Mix import qualified SDL.Mixer as Mix
import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate) import Graphics.Rendering.OpenGL hiding (color,scale,translate,rotate)
initWorld = initialWorld
{ _randGen = mkStdGen 2
, _windowX = 800
, _windowY = 600
}
pps = [(0,0),(50,0),(0,25)]
ppt = [(0,0),(-0.50,0),(0.20,0.25)]
main :: IO () main :: IO ()
main = do main = do
-- loadedSounds <- loadSounds
(sizex,sizey) <- loadConfig (sizex,sizey) <- loadConfig
setupLoop setupLoop
"windowName" "windowName"
sizex sizey sizex sizey
(doPreload >>= resizeSpareFBO sizex sizey) (doPreload >>= resizeSpareFBO sizex sizey)
cleanUpPreload cleanUpPreload
(initializeWorld $ generateFromTree lev1 $ initWorld) (fmap (setWindowSize sizex sizey) firstWorld)
( \preData w -> do ( \preData w -> do
startTicks <- SDL.ticks startTicks <- SDL.ticks
(lightTicks,timeSpentPoking) <- renderPicture' (_renderData preData) (lightTicks,timeSpentPoking) <- renderPicture' (_renderData preData)
@@ -80,3 +70,7 @@ main = do
(flip $ menuEvents $ flip handleEvent) (flip $ menuEvents $ flip handleEvent)
(\w -> Just $ update w) (\w -> Just $ update w)
Mix.closeAudio Mix.closeAudio
setWindowSize :: Int -> Int -> World -> World
setWindowSize x y w = w & windowX .~ fromIntegral x
& windowY .~ fromIntegral y
+7 -8
View File
@@ -4,6 +4,8 @@ import Dodge.Prototypes
import Dodge.Data import Dodge.Data
import Dodge.Critters import Dodge.Critters
import Dodge.Base import Dodge.Base
import Dodge.Floor
import Dodge.Layout
import Data.List import Data.List
import Data.Char import Data.Char
@@ -22,13 +24,6 @@ import qualified Data.Set as S
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
import qualified Data.Map as M import qualified Data.Map as M
--import Graphics.Gloss
--import Graphics.Gloss.Interface.IO.Game
--import Graphics.Gloss.Geometry.Angle
--import Graphics.Gloss.Geometry.Line
--import qualified Graphics.Gloss.Data.Point.Arithmetic as PA
--import Graphics.Gloss.Data.Vector
--import Graphics.Gloss.Data.Point
import Foreign.ForeignPtr import Foreign.ForeignPtr
import Control.Concurrent import Control.Concurrent
import Data.Tree import Data.Tree
@@ -36,6 +31,10 @@ import Data.Tree
initializeWorld :: World -> World initializeWorld :: World -> World
initializeWorld w = w initializeWorld w = w
firstWorld :: IO World
firstWorld = return $ generateFromTree lev1 $ initialWorld
initialWorld :: World
initialWorld = basicWorld initialWorld = basicWorld
{ _keys = S.empty { _keys = S.empty
, _cameraPos = (0,0) , _cameraPos = (0,0)
@@ -61,7 +60,7 @@ initialWorld = basicWorld
, _menuState = LevelMenu 1 , _menuState = LevelMenu 1
, _worldState = M.empty , _worldState = M.empty
, _windowX = 800 , _windowX = 800
, _windowY = 840 , _windowY = 600
} }
+3 -2
View File
@@ -31,13 +31,14 @@ setupLoop :: String
-> Int -> Int
-> IO (PreloadData a) -> IO (PreloadData a)
-> (PreloadData a -> IO ()) -> (PreloadData a -> IO ())
-> world -> IO world
-> (PreloadData a -> world -> IO (PreloadData a)) -> (PreloadData a -> world -> IO (PreloadData a))
-> (world -> Event -> Maybe world) -> (world -> Event -> Maybe world)
-> (world -> Maybe world) -> (world -> Maybe world)
-> IO () -> IO ()
setupLoop wName xSize ySize setupLoop wName xSize ySize
customInit initCleanup startWorld sideEffects eventFn worldFn = do customInit initCleanup ioStartWorld sideEffects eventFn worldFn = do
startWorld <- ioStartWorld
initializeAll initializeAll
bracket (createWindow (T.pack wName) (winConfig xSize ySize)) destroyWindow bracket (createWindow (T.pack wName) (winConfig xSize ySize)) destroyWindow
(\window -> (\window ->