diff --git a/engine/settings/src/directories.rs b/engine/settings/src/directories.rs index 4a32128..ca7831a 100644 --- a/engine/settings/src/directories.rs +++ b/engine/settings/src/directories.rs @@ -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"), + }) } } diff --git a/strafe-client/src/window.rs b/strafe-client/src/window.rs index df62246..4bba3ed 100644 --- a/strafe-client/src/window.rs +++ b/strafe-client/src/window.rs @@ -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);