From adc11ec65428bacfc1875e212d78796f75dc642d Mon Sep 17 00:00:00 2001 From: Johannes Hendrik Gerard van der Weide Date: Tue, 12 Dec 2023 16:59:37 +0100 Subject: [PATCH] Unfinished levelgen script --- src/levelgen.rs | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/levelgen.rs diff --git a/src/levelgen.rs b/src/levelgen.rs new file mode 100644 index 0000000..c94ba43 --- /dev/null +++ b/src/levelgen.rs @@ -0,0 +1,74 @@ +use bevy::prelude::*; +use serde::{Serialize, Deserialze}; +use std::fs; +use std::path::Path; + +pub struct LevelgenPlugin; + +impl Plugin for LevelgenPlugin { + fn build(&self, app: &mut App) { + app.add_systems(Startup, setup_levels) + .add_systems(Update, level_generation); + } +} + +#[derive(Serialize, Deserialize)] +pub struct Level { + enemies: Vec, + waves: u32, + treasure: i32, + doors: Vec, +} + +#[derive(Component)] +pub struct LevelGenerator { + levels_exit_north: Vec, + levels_exit_east: Vec, + levels_exit_south: Vec, + levels_exit_west: Vec, + path: Vec, + current_enemies: Vec, + current_waves: u32, + current_treasure: i32, +} + + +fn setup_levels(mut commands: Commands) { + let mut initial_level: String = " + # Enemies can only be set if they exist in data/enemies/ + # for example data/enemies/grunt.yml + enemies: [ + grunt + ] + # 0 means no enemies + waves: 1 + # 0 is no treasure + treasure: 0 + doors: [ + true, # North + true, # East + true, # South + true, # West + ] + ".to_string(); + let initial_level_path = Path::new("./data/levels/initial_level.yml"); + if initial_level_path.exists() { + initial_level = + fs::read_to_string("./data/levels/initial_level.yml").expect("Error reading data/levels/initial_level.yml"); + } else { + fs::write("./data/levels/initial_level.yml", initial_level.clone()) + .expect("Error writing data/levels/initial_level.yml"); + } + let paths = fs::read_dir("./data/levels/").unwrap(); + + for path in paths { + } + commands.spawn(( + LevelGenerator { + }, + )); +} + +fn level_generation() { + +}