Move zoning up world spheres
This commit is contained in:
+13
-1
@@ -8,6 +8,10 @@ module Dodge.Save (
|
||||
reloadLevelStart,
|
||||
) where
|
||||
|
||||
import Data.Graph.Inductive (labEdges, labNodes)
|
||||
import Dodge.Zoning.Pathing
|
||||
import Data.Foldable
|
||||
import Dodge.Wall.Zone
|
||||
import Dodge.Concurrent
|
||||
import Control.Lens
|
||||
import Dodge.Data.SaveSlot
|
||||
@@ -32,7 +36,6 @@ writeSaveSlot ss u = do
|
||||
(u ^. uvWorld . cWorld)
|
||||
return Just
|
||||
|
||||
|
||||
readSaveSlot :: SaveSlot -> IO (Universe -> Maybe Universe)
|
||||
readSaveSlot ss = do
|
||||
fExists <- doesFileExist $ saveSlotPath ss
|
||||
@@ -42,11 +45,20 @@ readSaveSlot ss = do
|
||||
case cwstr of
|
||||
Nothing -> putStrLn "loadSaveSlot failed to read saved file" >> return removescreenlayers
|
||||
Just cw -> return $ \uv -> Just $ uv & uvWorld . cWorld .~ cw
|
||||
& uvWorld %~ initWallZoning
|
||||
& uvWorld . pnZoning .~ foldl' (flip zonePn) mempty
|
||||
(labNodes $ path uv)
|
||||
& uvWorld . peZoning .~ foldl' (flip zonePe) mempty
|
||||
(map fromEdgeTuple $ labEdges $ path uv)
|
||||
& uvScreenLayers .~ []
|
||||
else putStrLn "loadSaveSlot failed to find saved file" >> return removescreenlayers
|
||||
where
|
||||
path uv = uv ^. uvWorld . cWorld . lWorld . pathGraph
|
||||
removescreenlayers = Just . (uvScreenLayers .~ [])
|
||||
|
||||
fromEdgeTuple :: (Int, Int, PathEdge) -> PathEdgeNodes
|
||||
fromEdgeTuple (a, b, pe) = PathEdgeNodes a b pe
|
||||
|
||||
saveSlotPath :: SaveSlot -> String
|
||||
saveSlotPath (SaveSlotNum i) = "saveSlot/" ++ show i
|
||||
saveSlotPath QuicksaveSlot = "saveSlot/QuickSave"
|
||||
|
||||
Reference in New Issue
Block a user