Correct loading of tile buffer when loading game
This commit is contained in:
+13
-15
@@ -3,14 +3,12 @@ module Dodge.StartNewGame (
|
||||
startSeedGame,
|
||||
) where
|
||||
|
||||
import Dodge.WorldLoad
|
||||
import Dodge.Menu.Loading
|
||||
import Dodge.Concurrent
|
||||
--import Dodge.Menu.Option
|
||||
import LensHelp
|
||||
import Dodge.Data.Universe
|
||||
import Dodge.LevelGen
|
||||
import Dodge.Save
|
||||
import Dodge.WorldLoad
|
||||
import LensHelp
|
||||
import System.Random
|
||||
|
||||
startNewGameInSlot :: Int -> Universe -> Universe
|
||||
@@ -18,20 +16,20 @@ startNewGameInSlot slot u = startSeedGame slot i u
|
||||
where
|
||||
i = fst $ randomR (0, maxBound) (_randGen (_uvWorld u))
|
||||
|
||||
|
||||
blockingLoad :: String -> IO (Universe -> Maybe Universe) -> Universe -> Universe
|
||||
blockingLoad str f u = u & uvScreenLayers .:~ loadingScreen str
|
||||
& addSideEffect f str
|
||||
|
||||
startSeedGame :: Int -> Int -> Universe -> Universe
|
||||
startSeedGame _ i u = blockingLoad "LOADING" (startSeedGameConc i $ u ^. preloadData) u
|
||||
startSeedGame _ i u =
|
||||
blockingLoad
|
||||
("GENERATING FROM SEED " ++ show i)
|
||||
(startSeedGameConc i $ u ^. preloadData)
|
||||
u
|
||||
|
||||
startSeedGameConc :: Int -> PreloadData -> IO (Universe -> Maybe Universe)
|
||||
startSeedGameConc seed pdata = do
|
||||
w <- generateWorldFromSeed (pdata ^?! renderData) seed
|
||||
writeFile "saveSlot/seed" $ show seed
|
||||
return $ Just
|
||||
. saveWorldInSlot (LevelStartSlot 0)
|
||||
. (uvScreenLayers .~ [])
|
||||
. (uvWorld .~ w)
|
||||
. (uvIOEffects %~ (\f uv -> (uvWorld . cWorld) (postWorldLoad (pdata ^?! renderData)) uv >>= f))
|
||||
return $
|
||||
Just
|
||||
. saveWorldInSlot (LevelStartSlot 0)
|
||||
. (uvScreenLayers .~ [])
|
||||
. (uvWorld .~ w)
|
||||
. postUniverseLoadSideEffect
|
||||
|
||||
Reference in New Issue
Block a user