diff --git a/crates/hedz_reloaded/src/client/ui/pause.rs b/crates/hedz_reloaded/src/client/ui/pause.rs index 0e84960..21f4dec 100644 --- a/crates/hedz_reloaded/src/client/ui/pause.rs +++ b/crates/hedz_reloaded/src/client/ui/pause.rs @@ -61,8 +61,14 @@ fn open_pause_menu( mut next_state: ResMut>, mut char_controls: ResMut, keyboard: Res>, + gamepads: Query<&Gamepad>, ) { - if keyboard.just_pressed(KeyCode::Escape) { + let should_toggle = keyboard.just_pressed(KeyCode::Escape) + || gamepads + .iter() + .any(|gamepad| gamepad.just_pressed(GamepadButton::Start)); + + if should_toggle { let menu_open = match state.get() { PauseMenuState::Closed => { next_state.set(PauseMenuState::Open); @@ -191,8 +197,19 @@ fn spawn_progress(bar: ProgressBar, value: u8, font: Handle) -> impl Bundl ) } -fn selection_input(mut state: ResMut, keyboard: Res>) { - if keyboard.just_pressed(KeyCode::ArrowUp) || keyboard.just_pressed(KeyCode::ArrowDown) { +fn selection_input( + mut state: ResMut, + keyboard: Res>, + gamepads: Query<&Gamepad>, +) { + let should_toggle = keyboard.just_pressed(KeyCode::ArrowUp) + || keyboard.just_pressed(KeyCode::ArrowDown) + || gamepads.iter().any(|gamepad| { + gamepad.just_pressed(GamepadButton::DPadUp) + || gamepad.just_pressed(GamepadButton::DPadDown) + }); + + if should_toggle { state.0 = match state.0 { ProgressBar::Music => ProgressBar::Sound, ProgressBar::Sound => ProgressBar::Music,