{-| IO actions that apply config side effects and save configuration settings to disk. -} module Dodge.Config.Update where import Dodge.Data.SoundOrigin import Dodge.Config.Data import Sound import Preload.Data import Data.Aeson (encodeFile) import Control.Monad (when) saveConfig :: Configuration -> PreloadData SoundOrigin -> IO (PreloadData SoundOrigin) saveConfig cfig d = do putStrLn "Saving config to data/dodge.config.json" encodeFile "data/dodge.config.json" cfig return d setVolume :: Configuration -> IO () setVolume cfig = do setSoundVolume ( _volume_master cfig * _volume_sound cfig) setMusicVolume ( _volume_master cfig * _volume_music cfig) setVol :: Configuration -> PreloadData SoundOrigin -> IO (PreloadData SoundOrigin) setVol cfig d = do setVolume cfig return d