diff --git a/engine/settings/src/directories.rs b/engine/settings/src/directories.rs new file mode 100644 index 0000000..4a32128 --- /dev/null +++ b/engine/settings/src/directories.rs @@ -0,0 +1,26 @@ +use std::path::PathBuf; + +use crate::settings::UserSettings; + +pub struct Directories{ + pub settings:PathBuf, + pub maps:PathBuf, + pub replays:PathBuf, +} +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{ + 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"), + } + } +} diff --git a/engine/settings/src/lib.rs b/engine/settings/src/lib.rs index 6e98cef..a6db573 100644 --- a/engine/settings/src/lib.rs +++ b/engine/settings/src/lib.rs @@ -1 +1,2 @@ pub mod settings; +pub mod directories; diff --git a/engine/settings/src/settings.rs b/engine/settings/src/settings.rs index 942c99e..45acd22 100644 --- a/engine/settings/src/settings.rs +++ b/engine/settings/src/settings.rs @@ -74,9 +74,9 @@ sensitivity_y_from_x_ratio=1 Sensitivity::DeriveY{x:0.0.001,y:DerivedSensitivity{ratio:1.0}} */ -pub fn read_user_settings()->UserSettings{ +pub fn read_user_settings(path:&std::path::Path)->UserSettings{ let mut cfg=configparser::ini::Ini::new(); - if let Ok(_)=cfg.load("settings.conf"){ + if let Ok(_)=cfg.load(path){ let (cfg_fov_x,cfg_fov_y)=(cfg.getfloat("camera","fov_x"),cfg.getfloat("camera","fov_y")); let fov=match(cfg_fov_x,cfg_fov_y){ (Ok(Some(fov_x)),Ok(Some(fov_y)))=>Fov::Exactly { @@ -136,4 +136,4 @@ pub fn read_user_settings()->UserSettings{ }else{ UserSettings::default() } -} \ No newline at end of file +} diff --git a/strafe-client/src/window.rs b/strafe-client/src/window.rs index 65097b4..df62246 100644 --- a/strafe-client/src/window.rs +++ b/strafe-client/src/window.rs @@ -4,7 +4,7 @@ use strafesnet_common::physics::{MiscInstruction,SetControlInstruction}; use crate::file::LoadFormat; use crate::physics_worker::Instruction as PhysicsWorkerInstruction; use strafesnet_session::session::{self,SessionInputInstruction,SessionControlInstruction,SessionPlaybackInstruction}; -use strafesnet_settings::settings; +use strafesnet_settings::directories; pub enum Instruction{ Resize(winit::dpi::PhysicalSize<u32>), @@ -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=settings::read_user_settings(); + let user_settings=directories::Directories::default().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);