Spawn LevelGenerator and fill it

Development
Johannes Hendrik Gerard van der Weide 2023-12-13 16:32:49 +01:00
parent 92d37cbfcf
commit a415a32012
1 changed files with 42 additions and 7 deletions

View File

@ -13,7 +13,7 @@ impl Plugin for LevelgenPlugin {
} }
} }
#[derive(Serialize, Deserialize)] #[derive(Clone, Serialize, Deserialize)]
pub struct Level { pub struct Level {
enemies: Vec<String>, enemies: Vec<String>,
waves: u32, waves: u32,
@ -23,11 +23,11 @@ pub struct Level {
#[derive(Component)] #[derive(Component)]
pub struct LevelGenerator { pub struct LevelGenerator {
levels_exit_north: Vec<String>, levels_north: Vec<Level>,
levels_exit_east: Vec<String>, levels_east: Vec<Level>,
levels_exit_south: Vec<String>, levels_south: Vec<Level>,
levels_exit_west: Vec<String>, levels_west: Vec<Level>,
path: Vec<String>, path: Vec<Level>,
current_enemies: Vec<u32>, current_enemies: Vec<u32>,
current_waves: u32, current_waves: u32,
current_treasure: i32, current_treasure: i32,
@ -55,7 +55,42 @@ fn setup_levels(mut commands: Commands) {
let level_yaml: Vec<String> = load_yaml_folder(default_level, Path::new("./data/levels")); let level_yaml: Vec<String> = load_yaml_folder(default_level, Path::new("./data/levels"));
let starting_level_data = serde_yaml::from_str::<Level>(&fs::read_to_string("./data/levels/default.yml").expect("Error reading data/levels/default.yml")); let starting_level = serde_yaml::from_str::<Level>(&fs::read_to_string("./data/levels/default.yml").expect("Error reading data/levels/default.yml")).unwrap();
let mut levels_north_loaded: Vec<Level> = vec![];
let mut levels_east_loaded: Vec<Level> = vec![];
let mut levels_south_loaded: Vec<Level> = vec![];
let mut levels_west_loaded: Vec<Level> = vec![];
for level_data in level_yaml {
let level: Level = serde_yaml::from_str::<Level>(&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() { fn level_generation() {