From 27869e9072bf9a53433354844affdf7c04b997cd Mon Sep 17 00:00:00 2001 From: Sofia Date: Fri, 24 Jul 2026 23:10:07 +0300 Subject: [PATCH] Swap weapon on scroll wheel --- godot/project.godot | 10 ++++++++++ rust/src/player/local_player.rs | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/godot/project.godot b/godot/project.godot index 04811ae..3639fa2 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -114,6 +114,16 @@ weapon_2={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null) ] } +swap_weapon_up={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +swap_weapon_down={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} [physics] diff --git a/rust/src/player/local_player.rs b/rust/src/player/local_player.rs index 9311ff4..faab345 100644 --- a/rust/src/player/local_player.rs +++ b/rust/src/player/local_player.rs @@ -500,6 +500,16 @@ impl ICharacterBody3D for LocalPlayer { Some(WeaponType::Raygun) } else if event.is_action_pressed("weapon_2") { Some(WeaponType::Shotgun) + } else if (event.is_action_pressed("swap_weapon_up") + || event.is_action_pressed("swap_weapon_down")) + && let Some(game) = Game::singleton() + && let Some(player) = game.bind().find_player(self.player_id.unwrap_or(0)) + { + match player.last_held_weapon { + WeaponType::Raygun => Some(WeaponType::Shotgun), + WeaponType::Shotgun => Some(WeaponType::Raygun), + WeaponType::Ball => None, + } } else { None };