use std::path::PathBuf; 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() }