From: Mario Date: Fri, 12 Oct 2018 19:52:06 +0000 (+1000) Subject: Reuse W_SwitchWeapon to reduce code duplication X-Git-Tag: xonotic-v0.8.5~1759^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=refs%2Fmerge-requests%2F611%2Fhead;p=xonotic%2Fxonotic-data.pk3dir.git Reuse W_SwitchWeapon to reduce code duplication --- diff --git a/qcsrc/server/weapons/selection.qc b/qcsrc/server/weapons/selection.qc index baee4ac53..5912261db 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 156c37f26..dd21e6419 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);