use std::path::PathBuf; use crate::settings::{UserSettings,load_user_settings}; pub struct Directories{ pub settings:PathBuf, pub maps:PathBuf, pub replays:PathBuf, } impl Directories{ pub fn settings(&self)->UserSettings{ load_user_settings(&self.settings) } pub fn user()->Option<Self>{ let dirs=directories::ProjectDirs::from("net.strafes","StrafesNET","Strafe Client")?; Some(Self{ settings:dirs.config_dir().join("settings.conf"), maps:dirs.cache_dir().join("maps"), // separate directory for remote downloaded replays (cache) // bots:dirs.cache_dir().join("bots"), replays:dirs.data_local_dir().join("replays"), }) } pub fn portable()->Result<Self,std::io::Error>{ let current_dir=std::env::current_dir()?; Ok(Self{ settings:current_dir.join("settings.conf"), maps:current_dir.join("maps"), replays:current_dir.join("replays"), }) } }