LambdaHack-0.1.20080413: Save.hs
module Save where
import System.Directory
import Control.Exception as E hiding (handle)
import File
import Level
import State
savefile = "LambdaHack.save"
restoreGame :: IO (Either (Level, State) String)
restoreGame =
E.catch (do
r <- strictDecodeCompressedFile savefile
removeFile savefile
case r of
(x,y,z) -> (z :: Bool) `seq` return $ Left (x,y))
(\ e -> case e of
_ -> return (Right $ "Restore failed: " ++
(unwords . lines) (show e)))
saveGame :: Level -> State -> IO ()
saveGame lvl state = encodeCompressedFile savefile (lvl,state,False)