packages feed

dow-0.2.6: src/HighScore.hs

module HighScore where

import Control.Monad
import System.Directory
import System.IO

loadScore :: IO Int
loadScore = do
  dir <- getAppDir

  let fileName = dir ++ "/highscore"
  fileChk <- doesFileExist fileName
  unless fileChk $ do
    hdl <- openFile fileName WriteMode
    hPutStr hdl "0"
    hClose hdl

  hdl <- openFile fileName ReadMode
  score <- hGetLine hdl
  hClose hdl

  return (read score)

saveScore :: Int -> IO ()
saveScore score = do
  dir <- getAppDir
  hdl <- openFile (dir ++ "/highscore") WriteMode
  hPutStr hdl (show score)
  hClose hdl

getAppDir :: IO FilePath
getAppDir = do
  dir <- getAppUserDataDirectory "dow"
  dirChk <- doesDirectoryExist dir
  unless dirChk $ createDirectory dir
  return dir