Skip to content
Snippets Groups Projects
fs_utils.rs 978 B
Newer Older
use std::path::PathBuf;

Louis's avatar
Louis committed
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)
}
Louis's avatar
Louis committed

#[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()
}