use crate::sim::prelude as sim; use crate::{debug, game_setup, util}; use bevy::prelude::*; mod prefab; mod systems; pub fn init(app: &mut App) { let app = app.add_plugins(( game_setup::GameSetupPlugin, util::UtilPlugin, debug::DebugPlugin, )); // app.add_systems(Startup, systems::setup_demo_2d) // .add_systems(Update, systems::demo_2d); let definitions = sim::Definitions::from_default_directory().unwrap(); let game_world = sim::GameWorld::generate_random(&definitions); // let game_world = match std::fs::read(sim::SAVE_FILE) { // Ok(data) => { // info!("Reading world data from \"{}\"", sim::SAVE_FILE); // bincode::deserialize(&data).expect("Loading world data from file") // } // Err(_) => { // info!("Generating mock world..."); // let world = sim::GameWorld::generate_mock(&definitions); // info!("Writing new world data to \"{}\"", sim::SAVE_FILE); // std::fs::write(sim::SAVE_FILE, bincode::serialize(&world).unwrap()).unwrap(); // world // } // }; app.register_type::() .register_type::() .insert_resource(definitions) .insert_resource(game_world) .add_systems(Startup, systems::setup_demo_3d) .add_systems(Update, (systems::demo_3d, systems::advance_time)); }