From bddf41274af96308d59a7774a90459235443b74c Mon Sep 17 00:00:00 2001 From: Wynd Date: Wed, 15 Jan 2025 10:53:04 +0200 Subject: [PATCH] Fixed multiple or no controllers crashing --- src/hud.rs | 24 +++++++++++++----------- src/player.rs | 6 ++++-- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/hud.rs b/src/hud.rs index 1031734..ca80e0d 100644 --- a/src/hud.rs +++ b/src/hud.rs @@ -133,18 +133,20 @@ fn start_button_logic( let mut score_text = score_text_query.single_mut(); let (mut player_transform, mut player_visibility) = player_query.single_mut(); - let gamepad = gamepads.single(); + let gamepad = gamepads.get_single(); - if gamepad.just_pressed(GamepadButton::Start) { - start_game( - &mut score_text, - &mut score, - &mut state, - &mut ui_elems_query, - &mut player_visibility, - &mut player_transform, - ); - return; + if let Ok(gamepad) = gamepad { + if gamepad.just_pressed(GamepadButton::Start) { + start_game( + &mut score_text, + &mut score, + &mut state, + &mut ui_elems_query, + &mut player_visibility, + &mut player_transform, + ); + return; + } } let (interaction, mut border_color) = button.single_mut(); diff --git a/src/player.rs b/src/player.rs index e8293e4..ae9ecc5 100644 --- a/src/player.rs +++ b/src/player.rs @@ -59,10 +59,12 @@ fn move_player( window: Query<&Window>, ) { let (mut transform, mut velocity) = query.single_mut(); - let gamepad = gamepads.single(); + let gamepad = gamepads.get_single(); velocity.0 = Vec2::ZERO; - handle_gamepad_movement(gamepad, &mut velocity); + if let Ok(gamepad) = gamepad { + handle_gamepad_movement(gamepad, &mut velocity); + } if keys.pressed(KeyCode::ArrowRight) { velocity.x += 1.0;