adventure-sim-rs/src/game.rs

41 lines
1.4 KiB
Rust

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_mock(&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::<sim::Definitions>()
.register_type::<sim::GameWorld>()
.insert_resource(definitions)
.insert_resource(game_world)
.add_systems(Startup, systems::setup_demo_3d)
.add_systems(Update, (systems::demo_3d, systems::advance_time));
}