From a4488cc072d4417f576c0ecafad6134bfdc5ca25 Mon Sep 17 00:00:00 2001 From: extrawurst Date: Fri, 19 Dec 2025 14:49:40 -0500 Subject: [PATCH] allow gamepad to open/nav pause menu --- crates/hedz_reloaded/src/client/ui/pause.rs | 23 ++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) 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,