//! Input phase plugin — processes player actions and interaction commands. //! //! All systems run in [`TickPhase::Input`]. Intra-phase ordering: //! - `process_player_input` runs first (dispatches queued actions) //! - Door/terminal/examine/triangle run after input (consume dispatched events) use bevy_app::prelude::*; use bevy_ecs::schedule::IntoScheduleConfigs; use crate::tick_phases::TickPhase; pub struct InputPlugin; impl Plugin for InputPlugin { fn build(&self, app: &mut App) { app.init_resource::() .init_resource::() // Triangle resolution resources (#250) .init_resource::() .add_systems( Update, ( super::input::process_player_input, super::interaction::process_door_interaction .after(super::input::process_player_input), super::interaction::process_terminal_interaction .after(super::input::process_player_input), super::examine::process_examine_interaction .after(super::input::process_player_input), super::triangle::apply_resolve_triangle .after(super::input::process_player_input), ) .in_set(TickPhase::Input), ); } }