From 92d37cbfcfc95e6331f1f69296ae44a29371fff1 Mon Sep 17 00:00:00 2001 From: Johannes Hendrik Gerard van der Weide Date: Tue, 12 Dec 2023 19:58:54 +0100 Subject: [PATCH] Added the still empty level gen plugin --- data/levels/default.yml | 17 +++++++++++++++++ src/levelgen.rs | 27 ++++++++------------------- src/main.rs | 3 +++ 3 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 data/levels/default.yml diff --git a/data/levels/default.yml b/data/levels/default.yml new file mode 100644 index 0000000..25c0b17 --- /dev/null +++ b/data/levels/default.yml @@ -0,0 +1,17 @@ + + # Enemies can only be set if they exist in data/enemies/ + # for example data/enemies/grunt.yml + enemies: [ + grunt + ] + # 0 means no enemies + waves: 0 + # 0 is no treasure + treasure: 0 + doors: [ + true, # North + true, # East + true, # South + true, # West + ] + \ No newline at end of file diff --git a/src/levelgen.rs b/src/levelgen.rs index c94ba43..99f5555 100644 --- a/src/levelgen.rs +++ b/src/levelgen.rs @@ -1,7 +1,8 @@ use bevy::prelude::*; -use serde::{Serialize, Deserialze}; +use serde::{Serialize, Deserialize}; use std::fs; use std::path::Path; +use crate::load_yaml_folder; pub struct LevelgenPlugin; @@ -34,14 +35,14 @@ pub struct LevelGenerator { fn setup_levels(mut commands: Commands) { - let mut initial_level: String = " + let default_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 + waves: 0 # 0 is no treasure treasure: 0 doors: [ @@ -50,23 +51,11 @@ fn setup_levels(mut commands: Commands) { 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(); + ".to_string(); - for path in paths { - } - commands.spawn(( - LevelGenerator { - }, - )); + 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")); } fn level_generation() { diff --git a/src/main.rs b/src/main.rs index e60b1ca..6520343 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,7 @@ use player::PlayerPlugin; use serde::{Deserialize, Serialize}; use std::path::Path; use crate::player::Player; +use crate::levelgen::LevelgenPlugin; use crate::setup::config_loader::load_yaml_folder; #[derive(Component, Serialize, Deserialize)] @@ -24,6 +25,7 @@ pub struct InputVisual { pub mod setup; mod player; +mod levelgen; fn main() { App::new() @@ -42,6 +44,7 @@ fn main() { .build(), ) .add_plugins(PlayerPlugin) + .add_plugins(LevelgenPlugin) .add_systems(Startup, setup) .add_systems(Update, get_input) .add_systems(Update, draw_input)