// Simulation module - Core simulation plugin and systems // Implements deterministic tick-based simulation (D-010 principle 4) use bevy_app::prelude::*; use bevy_ecs::schedule::IntoScheduleConfigs; pub mod input; pub mod interaction; pub mod movement; pub mod path_follow; pub mod pathfinding; pub mod rng; pub mod tier; pub mod time; /// Core simulation plugin /// Manages simulation time, RNG, input processing, and tier transitions pub struct SimulationPlugin; impl Plugin for SimulationPlugin { fn build(&self, app: &mut App) { // Initialize core simulation resources app.init_resource::() .insert_resource(rng::SimRng::new(0)) .init_resource::() .init_resource::() .add_systems( Update, ( input::process_player_input, pathfinding::compute_paths.after(input::process_player_input), path_follow::follow_paths.after(pathfinding::compute_paths), movement::validate_movement.after(path_follow::follow_paths), interaction::compute_nearby_interactions .after(movement::validate_movement), path_follow::cleanup_path_blocked.after(movement::validate_movement), time::advance_tick .after(path_follow::cleanup_path_blocked) .after(interaction::compute_nearby_interactions), ), ); tracing::debug!("SimulationPlugin initialized"); } }