settings: make distinction between portable and installed

This commit is contained in:
Quaternions 2025-01-22 07:47:22 -08:00
parent 324367a24a
commit 58f892c414
2 changed files with 13 additions and 7 deletions
engine/settings/src
strafe-client/src

@ -11,16 +11,22 @@ impl Directories{
pub fn user_settings(&self)->UserSettings{
crate::settings::read_user_settings(&self.settings)
}
}
impl Default for Directories{
fn default()->Self{
let dirs=directories::ProjectDirs::from("net.strafes","StrafesNET","Strafe Client").unwrap();
Self{
pub fn installed()->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"),
})
}
}

@ -211,7 +211,7 @@ pub fn worker<'a>(
setup_context:crate::setup::SetupContext<'a>,
)->crate::compat_worker::QNWorker<'a,TimedInstruction<Instruction,SessionTimeInner>>{
// WindowContextSetup::new
let user_settings=directories::Directories::default().user_settings();
let user_settings=directories::Directories::portable().unwrap().user_settings();
let mut graphics=strafesnet_graphics::graphics::GraphicsState::new(&setup_context.device,&setup_context.queue,&setup_context.config);
graphics.load_user_settings(&user_settings);