From e11a84bf4c939e55f0d19e01a9d7d1c5617c93bb Mon Sep 17 00:00:00 2001 From: ShenMian Date: Sun, 14 Jul 2024 18:14:24 +0100 Subject: [PATCH] refactor(config): refactor the code for creating default configuration file --- src/main.rs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index a7a03a0..3fe9a33 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,19 +29,15 @@ use bevy::prelude::*; use bevy_kira_audio::prelude::*; const CONFIG_FILE_PATH: &str = "config.toml"; +const KEYMAP_FILE_PATH: &str = "keymap.toml"; fn load_config() -> Config { - if !Path::new(CONFIG_FILE_PATH).is_file() { - let default_config_toml = toml::to_string(&Config::default()).unwrap(); - fs::write(CONFIG_FILE_PATH, default_config_toml).unwrap(); - } let config_toml = fs::read_to_string(CONFIG_FILE_PATH).unwrap(); let config: Config = toml::from_str(config_toml.as_str()).unwrap(); config } fn load_input_map() -> InputMap { - const KEYMAP_FILE_PATH: &str = "keymap.toml"; if !Path::new(KEYMAP_FILE_PATH).is_file() { let default_keymap_toml = toml::to_string(&default_input_map()).unwrap(); fs::write(KEYMAP_FILE_PATH, default_keymap_toml).unwrap(); @@ -52,11 +48,15 @@ fn load_input_map() -> InputMap { input_map } -fn save_config(config: Res) { - let config_toml = toml::to_string(&*config).unwrap(); +fn save_config(config: &Config) { + let config_toml = toml::to_string(&config).unwrap(); fs::write(CONFIG_FILE_PATH, config_toml).unwrap(); } +fn save_config_system(config: Res) { + save_config(&config); +} + #[bevy_main] fn main() { let mut app = App::new(); @@ -95,7 +95,7 @@ fn main() { handle_audio_event, adjust_viewport, adjust_camera_scale, - save_config.run_if(resource_changed_or_removed::()), + save_config_system.run_if(resource_changed_or_removed::()), (button_input_to_action, handle_actions).chain(), ), ) @@ -153,6 +153,11 @@ fn main() { .add_systems(Update, mouse_input.run_if(in_state(AppState::AutoMove))) .add_systems(OnExit(AppState::AutoMove), cleanup_sprite_color); + if !Path::new(CONFIG_FILE_PATH).is_file() { + let default_config_toml = toml::to_string(&Config::default()).unwrap(); + fs::write(CONFIG_FILE_PATH, default_config_toml).unwrap(); + save_config(&Config::default()); + } let config = load_config(); let player_movement = PlayerMovement::new(config.player_move_speed); app.insert_resource(config)