From 20217f716e440d4ccd87b9d058b01f3ff448bff0 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 13 Oct 2018 05:52:06 +1000 Subject: [PATCH] Reuse W_SwitchWeapon to reduce code duplication --- qcsrc/server/weapons/selection.qc | 27 +++++++++++---------------- qcsrc/server/weapons/selection.qh | 2 +- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/qcsrc/server/weapons/selection.qc b/qcsrc/server/weapons/selection.qc index baee4ac532..5912261dbf 100644 --- a/qcsrc/server/weapons/selection.qc +++ b/qcsrc/server/weapons/selection.qc @@ -266,39 +266,34 @@ void W_SwitchToOtherWeapon(entity this, .entity weaponentity) W_SwitchWeapon_Force(this, ww, weaponentity); } -void W_SwitchWeapon(entity this, Weapon w, .entity weaponentity) +bool W_SwitchWeapon(entity this, Weapon w, .entity weaponentity) { if(this.(weaponentity).m_switchweapon != w) { if(client_hasweapon(this, w, weaponentity, true, true)) + { W_SwitchWeapon_Force(this, w, weaponentity); + return true; + } else + { this.(weaponentity).selectweapon = w.m_id; // update selectweapon anyway + return false; + } } else if(!forbidWeaponUse(this)) { entity actor = this; w.wr_reload(w, actor, weaponentity); } + + return true; // player already has the weapon out or needs to reload } void W_SwitchWeapon_TryOthers(entity this, Weapon w, .entity weaponentity) { - if(this.(weaponentity).m_switchweapon != w) - { - if(client_hasweapon(this, w, weaponentity, true, true)) // NOTE: still complains - W_SwitchWeapon_Force(this, w, weaponentity); - else - { - this.(weaponentity).selectweapon = w.m_id; // update selectweapon anyway - W_NextWeaponOnImpulse(this, w.impulse, weaponentity); - } - } - else if(!forbidWeaponUse(this)) - { - entity actor = this; - w.wr_reload(w, actor, weaponentity); - } + if(!W_SwitchWeapon(this, w, weaponentity)) + W_NextWeaponOnImpulse(this, w.impulse, weaponentity); } void W_CycleWeapon(entity this, string weaponorder, float dir, .entity weaponentity) diff --git a/qcsrc/server/weapons/selection.qh b/qcsrc/server/weapons/selection.qh index 156c37f262..dd21e6419d 100644 --- a/qcsrc/server/weapons/selection.qh +++ b/qcsrc/server/weapons/selection.qh @@ -18,7 +18,7 @@ void W_SwitchWeapon_Force(Player this, Weapon w, .entity weaponentity); // perform weapon to attack (weaponstate and attack_finished check is here) void W_SwitchToOtherWeapon(entity this, .entity weaponentity); -void W_SwitchWeapon(entity this, Weapon imp, .entity weaponentity); +bool W_SwitchWeapon(entity this, Weapon imp, .entity weaponentity); // returns false if the player does not have the weapon void W_SwitchWeapon_TryOthers(entity this, Weapon imp, .entity weaponentity); void W_CycleWeapon(entity this, string weaponorder, float dir, .entity weaponentity); -- 2.39.2