use bevy::prelude::*; mod camera; mod citizen; mod constants; mod cursor; mod game; mod item; mod tile; mod tilemap; mod tiles; use bevy::diagnostic::FrameTimeDiagnosticsPlugin; fn main() { App::new() .insert_resource(game::ZIndex(0.0)) .add_plugins( DefaultPlugins .set(WindowPlugin { primary_window: Some(Window { title: String::from("Dorf"), ..Default::default() }), ..Default::default() }) .set(ImagePlugin::default_nearest()), ) .add_plugins(FrameTimeDiagnosticsPlugin::default()) // Add the FrameTimeDiagnosticsPlugin here .insert_resource(ClearColor(Color::srgb(0.0, 0.0, 0.0))) .add_plugins(tilemap::TilemapPlugin) .add_systems( Startup, ( camera::spawn_panning_camera, cursor::setup_cursor, citizen::spawn_citizens, ), ) .add_systems( FixedUpdate, ( camera::camera_movement, citizen::update_citizen_wandering_targets, citizen::citizen_movement, cursor::move_cursor, // citizen::check_citizen_positions_for_chunks, ), ) .init_resource::() .add_systems( Update, ( tile::camera_z_movement, tile::update_tile_visibility .run_if(|camera_moved: Res| camera_moved.0), // log_fps_system, ), ) .run(); } use bevy::diagnostic::DiagnosticsStore; fn log_fps_system(diagnostics: Res) { if let Some(fps) = diagnostics .get(&FrameTimeDiagnosticsPlugin::FPS) .and_then(|fps_diagnostic| fps_diagnostic.average()) { println!("Average FPS: {:.2}", fps); } }