Add generic derivations and To/FromJSON instances
This commit is contained in:
@@ -3,13 +3,38 @@ module Dodge.Save
|
||||
, loadSaveSlot
|
||||
, doQuicksave
|
||||
, saveLevelStartSlot
|
||||
, writeSaveSlot
|
||||
, readSaveSlot
|
||||
) where
|
||||
import Dodge.Data
|
||||
|
||||
import Text.Read (readMaybe)
|
||||
import qualified Data.Map.Strict as M
|
||||
--import Data.Maybe
|
||||
import Control.Lens
|
||||
--import qualified Data.Set as S
|
||||
import System.Directory
|
||||
|
||||
writeSaveSlot :: SaveSlot -> Universe -> IO ()
|
||||
writeSaveSlot ss u = do
|
||||
createDirectoryIfMissing True "saveSlot"
|
||||
writeFile (saveSlotPath ss) (show $ u ^. uvWorld . cWorld)
|
||||
|
||||
saveSlotPath :: SaveSlot -> String
|
||||
saveSlotPath (SaveSlotNum i) = "saveSlot/" ++ show i
|
||||
saveSlotPath QuicksaveSlot = "saveSlot/QuickSave"
|
||||
saveSlotPath LevelStartSlot = "saveSlot/LevelStartSave"
|
||||
|
||||
readSaveSlot :: SaveSlot -> Universe -> IO Universe
|
||||
readSaveSlot ss uv = do
|
||||
fExists <- doesFileExist $ saveSlotPath ss
|
||||
if fExists
|
||||
then do
|
||||
cwstr <- readFile $ saveSlotPath ss
|
||||
case readMaybe cwstr of
|
||||
Nothing -> putStrLn "loadSaveSlot failed to read saved file" >> return uv
|
||||
Just cw -> return $ uv & uvWorld . cWorld .~ cw
|
||||
else putStrLn "loadSaveSlot failed to find saved file" >> return uv
|
||||
|
||||
saveWorldInEmptySlot :: SaveSlot -> Universe -> Universe
|
||||
saveWorldInEmptySlot slot w = case M.lookup slot $ _savedWorlds w of
|
||||
|
||||
Reference in New Issue
Block a user