use bevy::prelude::*; use bevy_replicon::prelude::{ClientState, FromClient, SendMode, ServerTriggerExt, ToClients}; use shared::{ GameState, backpack::{ BackbackSwapEvent, Backpack, UiHeadState, backpack_ui::{BackpackUiState, HEAD_SLOTS}, }, control::{ BackpackLeftPressed, BackpackRightPressed, BackpackSwapPressed, BackpackTogglePressed, }, protocol::{ClientToController, PlaySound}, }; pub fn plugin(app: &mut App) { app.add_systems( FixedUpdate, sync_on_change.run_if(in_state(GameState::Playing)), ); app.add_systems( FixedUpdate, swap_head_inputs.run_if(in_state(ClientState::Disconnected)), ); } #[allow(clippy::too_many_arguments)] fn swap_head_inputs( backpacks: Query>, clients: ClientToController, mut backpack_toggles: MessageReader>, mut backpack_lefts: MessageReader>, mut backpack_rights: MessageReader>, mut backpack_swaps: MessageReader>, mut commands: Commands, mut state: Single<&mut BackpackUiState>, time: Res