Newer
Older
use micro_musicbox::prelude::AudioSettings;
use serde::{Deserialize, Serialize};
pub const AUTOSAVE_NAME: &str = "autosave.json";
pub fn get_root_save_dir() -> Option<PathBuf> {
Some(
directories::ProjectDirs::from("com", "microhacks", "TraderTales")?
.data_dir()
.to_path_buf(),
)
}
pub fn has_auto_save() -> bool {
get_root_save_dir()
.map(|dir: PathBuf| dir.join(AUTOSAVE_NAME).exists())
.unwrap_or(false)
}
#[derive(Serialize, Deserialize)]
pub struct Options {
pub audio: AudioSettings,
}
pub fn read_config_file() -> Option<Options> {
let root_dir = get_root_save_dir()?;
let save_path = root_dir.join("config.toml");
let file = std::fs::read(save_path).ok()?;
toml::from_slice(file.as_slice()).ok()
}
pub fn save_config_file(options: Options) -> Option<()> {
let root_dir = get_root_save_dir()?;
let save_path = root_dir.join("config.toml");
std::fs::write(save_path, toml::to_string_pretty(&options).ok()?).ok()
}