33 lines
890 B
Rust
33 lines
890 B
Rust
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"),
|
|
})
|
|
}
|
|
}
|