diff --git a/data/player_data.yml b/data/player/player_data.yml similarity index 100% rename from data/player_data.yml rename to data/player/player_data.yml diff --git a/src/main.rs b/src/main.rs index b1fd1ff..b9308c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,6 +22,7 @@ pub struct InputVisual { pub input_direction: Vec2, } +pub mod setup; mod player; fn main() { diff --git a/src/player.rs b/src/player.rs index 69f1784..48fccdd 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; -use serde::{Deserialize, Serialize}; -use std::fs; +use serde::{Serialize, Deserialize}; use std::path::Path; +use crate::setup::config_loader::load_yaml_folder; pub struct PlayerPlugin; @@ -33,7 +33,7 @@ pub struct Player { fn spawn_player(mut commands: Commands, asset_server: Res) { //Default player_data - let mut player_data_yaml: String = " + let player_data_default: String = " #These values you can just go edit no problem sprite_path: blobcat_hertog.png speed: 75.0 @@ -50,16 +50,11 @@ fn spawn_player(mut commands: Commands, asset_server: Res) { dash_modifier: 0.3 " .to_string(); - let player_data_file = Path::new("./data/player_data.yml"); - if player_data_file.exists() { - player_data_yaml = fs::read_to_string("./data/player_data.yml") - .expect("Error reading data/player_data.yml"); - } else { - fs::write("./data/player_data.yml", player_data_yaml.clone()) - .expect("Error writing data/player_data.yml"); - } + + let player_data_yaml: Vec = load_yaml_folder(player_data_default, Path::new("./data/player")); + let player_data = - serde_yaml::from_str::(&player_data_yaml).expect("Error serializing to YAML"); + serde_yaml::from_str::(&player_data_yaml[0]).expect("Error serializing to YAML"); commands.spawn(( SpriteBundle { sprite: Sprite { diff --git a/src/setup.rs b/src/setup.rs new file mode 100644 index 0000000..b3a91d5 --- /dev/null +++ b/src/setup.rs @@ -0,0 +1 @@ +pub mod config_loader; diff --git a/src/setup/config_loader.rs b/src/setup/config_loader.rs new file mode 100644 index 0000000..8628a4f --- /dev/null +++ b/src/setup/config_loader.rs @@ -0,0 +1,18 @@ +use std::fs; +use std::path::Path; + +pub fn load_yaml_folder(default: String, folder: &Path) -> Vec { + let folder_path = fs::read_dir(folder).unwrap(); + let mut return_yaml: Vec = Vec::new(); + + for file in folder_path { + if file.as_ref().unwrap().path().with_extension("yml").exists() { + let yaml_file = fs::read_to_string(file.unwrap().path()).expect("Error reading config file"); + return_yaml.push(yaml_file); + } + } + if return_yaml.capacity() < 1 { + return_yaml.push(default); + } + return return_yaml; +}