Refactor concurrent side effects

This commit is contained in:
2022-10-30 14:55:30 +00:00
parent 11e873ea48
commit 624a4c3bcd
10 changed files with 56 additions and 47 deletions
+4 -2
View File
@@ -18,6 +18,7 @@ import qualified Data.ByteString.Lazy as BS
import Dodge.Data.Universe
--import qualified Data.Set as S
import System.Directory
--import Data.Sequence ((|>))
writeSaveSlot :: SaveSlot -> Universe -> IO (Universe -> Maybe Universe)
@@ -52,13 +53,14 @@ saveSlotPath QuicksaveSlot = "saveSlot/QuickSave"
saveSlotPath (LevelStartSlot i) = "saveSlot/LevelStart" ++ show i
saveWorldInSlot :: SaveSlot -> Universe -> Universe
saveWorldInSlot slot u = tryConcEffect False "SAVING" (writeSaveSlot slot u) u
--saveWorldInSlot slot u = u & uvSideEffects %~ (|> NewSideEffect (writeSaveSlot slot u) "SAVING")
saveWorldInSlot slot u = u & addSideEffect (writeSaveSlot slot u) "SAVING"
reloadLevelStart :: Universe -> Universe
reloadLevelStart = loadSaveSlot (LevelStartSlot 0)
loadSaveSlot :: SaveSlot -> Universe -> Universe
loadSaveSlot slot = tryConcEffect True "LOADING" (readSaveSlot slot)
loadSaveSlot slot = addSideEffect (readSaveSlot slot) "LOADING"
doQuicksave :: Universe -> Universe
doQuicksave = saveWorldInSlot QuicksaveSlot