From a415a32012694584a526cb43fd29c88eb92c20e5 Mon Sep 17 00:00:00 2001 From: Johannes Hendrik Gerard van der Weide Date: Wed, 13 Dec 2023 16:32:49 +0100 Subject: [PATCH] Spawn LevelGenerator and fill it --- src/levelgen.rs | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/src/levelgen.rs b/src/levelgen.rs index 99f5555..ea396e8 100644 --- a/src/levelgen.rs +++ b/src/levelgen.rs @@ -13,7 +13,7 @@ impl Plugin for LevelgenPlugin { } } -#[derive(Serialize, Deserialize)] +#[derive(Clone, Serialize, Deserialize)] pub struct Level { enemies: Vec, waves: u32, @@ -23,11 +23,11 @@ pub struct Level { #[derive(Component)] pub struct LevelGenerator { - levels_exit_north: Vec, - levels_exit_east: Vec, - levels_exit_south: Vec, - levels_exit_west: Vec, - path: Vec, + levels_north: Vec, + levels_east: Vec, + levels_south: Vec, + levels_west: Vec, + path: Vec, current_enemies: Vec, current_waves: u32, current_treasure: i32, @@ -55,7 +55,42 @@ fn setup_levels(mut commands: Commands) { let level_yaml: Vec = load_yaml_folder(default_level, Path::new("./data/levels")); - let starting_level_data = serde_yaml::from_str::(&fs::read_to_string("./data/levels/default.yml").expect("Error reading data/levels/default.yml")); + let starting_level = serde_yaml::from_str::(&fs::read_to_string("./data/levels/default.yml").expect("Error reading data/levels/default.yml")).unwrap(); + + let mut levels_north_loaded: Vec = vec![]; + let mut levels_east_loaded: Vec = vec![]; + let mut levels_south_loaded: Vec = vec![]; + let mut levels_west_loaded: Vec = vec![]; + + for level_data in level_yaml { + let level: Level = serde_yaml::from_str::(&level_data).expect("Error reading level"); + + if level.doors[0] == true { + levels_north_loaded.push(level.clone()); + } + if level.doors[1] == true { + levels_east_loaded.push(level.clone()); + } + if level.doors[2] == true { + levels_south_loaded.push(level.clone()); + } + if level.doors[3] == true { + levels_west_loaded.push(level.clone()); + } + } + + commands.spawn(( + LevelGenerator { + levels_north: levels_north_loaded, + levels_east: levels_east_loaded, + levels_south: levels_south_loaded, + levels_west: levels_west_loaded, + path: vec![starting_level.clone()], + current_enemies: Vec::new(), + current_waves: starting_level.waves, + current_treasure: starting_level.treasure, + }, + )); } fn level_generation() {