From: Mircea Kitsune Date: Fri, 11 Feb 2011 15:31:14 +0000 (+0200) Subject: Attempt to further simplify the reload code, as requested. First part of the first... X-Git-Tag: xonotic-v0.5.0~309^2~7^2~57 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=cad7a84d59626dceb9653c62451702843b00b334;p=xonotic%2Fxonotic-data.pk3dir.git Attempt to further simplify the reload code, as requested. First part of the first phase. --- diff --git a/qcsrc/server/cl_weaponsystem.qc b/qcsrc/server/cl_weaponsystem.qc index 90c581f38..4465c190b 100644 --- a/qcsrc/server/cl_weaponsystem.qc +++ b/qcsrc/server/cl_weaponsystem.qc @@ -1614,7 +1614,11 @@ void W_SetupProjectileVelocity(entity missile, float pSpeed, float spread) // weapon reloading code +..float reload_ammo_player; +.float reload_ammo_amount, reload_ammo_min, reload_time; .float reload_complain; +.string reload_sound; + float W_ReloadCheck(float ammo_amount, float ammo_shot) { // our weapon is fully loaded, no need to reload @@ -1651,7 +1655,7 @@ float W_ReloadCheck(float ammo_amount, float ammo_shot) return TRUE; } -void W_ReloadedAndReady() +void W_ReloadEnd() { float t; @@ -1677,7 +1681,7 @@ void W_ReloadedAndReady() w_ready(); } -void W_Reload() +void W_ReloadStart() { // return if reloading is disabled for this weapon if(!self.reload_ammo_amount) @@ -1693,8 +1697,19 @@ void W_Reload() t = max(time, ATTACK_FINISHED(self)) + self.reload_time + 1; ATTACK_FINISHED(self) = t; - weapon_thinkf(WFRAME_RELOAD, self.reload_time, W_ReloadedAndReady); + weapon_thinkf(WFRAME_RELOAD, self.reload_time, W_ReloadEnd); self.old_clip_load = self.clip_load; self.clip_load = -1; +} + +void W_Reload(.float sent_ammo_player, float sent_ammo_min, float sent_ammo_amount, float sent_time, string sent_sound) +{ + self.reload_ammo_player = sent_ammo_player; + self.reload_ammo_min = sent_ammo_min; + self.reload_ammo_amount = sent_ammo_amount; + self.reload_time = sent_time; + self.reload_sound = sent_sound; + + W_ReloadStart(); } \ No newline at end of file diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 9789b8bc1..d7242de93 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -620,10 +620,6 @@ float client_cefc_accumulatortime; .float old_clip_load; .float clip_size; -..float reload_ammo_player; -.float reload_ammo_amount, reload_ammo_min, reload_time; -.string reload_sound; - #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE // when doing this, hagar can go through clones // #define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_BBOX diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index e901a459e..8da5a271d 100644 --- a/qcsrc/server/w_crylink.qc +++ b/qcsrc/server/w_crylink.qc @@ -11,13 +11,7 @@ REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_FLAG_RELO void W_Crylink_Reload() { - self.reload_ammo_player = ammo_cells; - self.reload_ammo_min = min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_crylink_reload_ammo; - self.reload_time = autocvar_g_balance_crylink_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_cells, min(autocvar_g_balance_crylink_primary_ammo, autocvar_g_balance_crylink_secondary_ammo), autocvar_g_balance_crylink_reload_ammo, autocvar_g_balance_crylink_reload_time, "weapons/reload.wav"); } void W_Crylink_CheckLinks(entity e) diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index 92775d210..4f4329d01 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -7,13 +7,7 @@ REGISTER_WEAPON(ELECTRO, w_electro, IT_CELLS, 5, WEP_FLAG_NORMAL | WEP_FLAG_RELO void W_Electro_Reload() { - self.reload_ammo_player = ammo_cells; - self.reload_ammo_min = min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_electro_reload_ammo; - self.reload_time = autocvar_g_balance_electro_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_cells, min(autocvar_g_balance_electro_primary_ammo, autocvar_g_balance_electro_secondary_ammo), autocvar_g_balance_electro_reload_ammo, autocvar_g_balance_electro_reload_time, "weapons/reload.wav"); } void W_Plasma_Explode_Combo (void); diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index 29fdab181..f6bbf36ce 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -12,13 +12,7 @@ void W_Fireball_Reload() if(self.ammo_fuel < 1) self.ammo_fuel = 0; - self.reload_ammo_player = ammo_fuel; - self.reload_ammo_min = min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_fireball_reload_ammo; - self.reload_time = autocvar_g_balance_fireball_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_fuel, min(autocvar_g_balance_fireball_primary_ammo, autocvar_g_balance_fireball_secondary_ammo), autocvar_g_balance_fireball_reload_ammo, autocvar_g_balance_fireball_reload_time, "weapons/reload.wav"); } void W_Fireball_Explode (void) diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 5ebe530cb..c508a6095 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -7,13 +7,7 @@ REGISTER_WEAPON(GRENADE_LAUNCHER, w_glauncher, IT_ROCKETS, 4, WEP_FLAG_NORMAL | void W_GrenadeLauncher_Reload() { - self.reload_ammo_player = ammo_rockets; - self.reload_ammo_min = min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_grenadelauncher_reload_ammo; - self.reload_time = autocvar_g_balance_grenadelauncher_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_rockets, min(autocvar_g_balance_grenadelauncher_primary_ammo, autocvar_g_balance_grenadelauncher_secondary_ammo), autocvar_g_balance_grenadelauncher_reload_ammo, autocvar_g_balance_grenadelauncher_reload_time, "weapons/reload.wav"); } void W_Grenade_Explode (void) diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 3f57c141e..e2ec34fff 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -6,13 +6,7 @@ REGISTER_WEAPON(HAGAR, w_hagar, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_RELOAD void W_Hagar_Reload() { - self.reload_ammo_player = ammo_rockets; - self.reload_ammo_min = min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_hagar_reload_ammo; - self.reload_time = autocvar_g_balance_hagar_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_rockets, min(autocvar_g_balance_hagar_primary_ammo, autocvar_g_balance_hagar_secondary_ammo), autocvar_g_balance_hagar_reload_ammo, autocvar_g_balance_hagar_reload_time, "weapons/reload.wav"); } void W_Hagar_Explode (void) diff --git a/qcsrc/server/w_hlac.qc b/qcsrc/server/w_hlac.qc index 212def8af..2b50216e4 100644 --- a/qcsrc/server/w_hlac.qc +++ b/qcsrc/server/w_hlac.qc @@ -5,13 +5,7 @@ REGISTER_WEAPON(HLAC, w_hlac, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE void W_HLAC_Reload() { - self.reload_ammo_player = ammo_cells; - self.reload_ammo_min = min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_hlac_reload_ammo; - self.reload_time = autocvar_g_balance_hlac_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_cells, min(autocvar_g_balance_hlac_primary_ammo, autocvar_g_balance_hlac_secondary_ammo), autocvar_g_balance_hlac_reload_ammo, autocvar_g_balance_hlac_reload_time, "weapons/reload.wav"); } void W_HLAC_Touch (void) diff --git a/qcsrc/server/w_laser.qc b/qcsrc/server/w_laser.qc index 1b5dfcb1c..70cf072fb 100644 --- a/qcsrc/server/w_laser.qc +++ b/qcsrc/server/w_laser.qc @@ -6,13 +6,7 @@ void(float imp) W_SwitchWeapon; void W_Laser_Reload() { - self.reload_ammo_player = zero_ammo; - self.reload_ammo_min = 0; - self.reload_ammo_amount = autocvar_g_balance_laser_reload_ammo; - self.reload_time = autocvar_g_balance_laser_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(zero_ammo, 0, autocvar_g_balance_laser_reload_ammo, autocvar_g_balance_laser_reload_time, "weapons/reload.wav"); } void W_Laser_Touch (void) diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 77ff668d1..6d145b037 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -8,13 +8,7 @@ void W_Mine_Think (void); void W_MineLayer_Reload() { - self.reload_ammo_player = ammo_rockets; - self.reload_ammo_min = autocvar_g_balance_minelayer_ammo; - self.reload_ammo_amount = autocvar_g_balance_minelayer_reload_ammo; - self.reload_time = autocvar_g_balance_minelayer_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_rockets, autocvar_g_balance_minelayer_ammo, autocvar_g_balance_minelayer_reload_ammo, autocvar_g_balance_minelayer_reload_time, "weapons/reload.wav"); } void spawnfunc_weapon_minelayer (void) diff --git a/qcsrc/server/w_minstanex.qc b/qcsrc/server/w_minstanex.qc index 267bc2547..30212b4f1 100644 --- a/qcsrc/server/w_minstanex.qc +++ b/qcsrc/server/w_minstanex.qc @@ -6,16 +6,10 @@ REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_HIDDEN | WEP_FLAG_ void W_Minstanex_Reload() { - self.reload_ammo_player = ammo_cells; if(autocvar_g_balance_minstanex_laser_ammo) - self.reload_ammo_min = min(autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo); + W_Reload(ammo_cells, min(autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_laser_ammo), autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav"); else - self.reload_ammo_min = autocvar_g_balance_minstanex_ammo; - self.reload_ammo_amount = autocvar_g_balance_minstanex_reload_ammo; - self.reload_time = autocvar_g_balance_minstanex_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_cells, autocvar_g_balance_minstanex_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav"); } void W_MinstaNex_Attack (void) diff --git a/qcsrc/server/w_nex.qc b/qcsrc/server/w_nex.qc index e4870cac8..ef6548cd9 100644 --- a/qcsrc/server/w_nex.qc +++ b/qcsrc/server/w_nex.qc @@ -5,13 +5,7 @@ REGISTER_WEAPON(NEX, w_nex, IT_CELLS, 7, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | void W_Nex_Reload() { - self.reload_ammo_player = ammo_cells; - self.reload_ammo_min = min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_nex_reload_ammo; - self.reload_time = autocvar_g_balance_nex_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_cells, min(autocvar_g_balance_nex_primary_ammo, autocvar_g_balance_nex_secondary_ammo), autocvar_g_balance_nex_reload_ammo, autocvar_g_balance_nex_reload_time, "weapons/reload.wav"); } void SendCSQCNexBeamParticle(float charge) { diff --git a/qcsrc/server/w_rocketlauncher.qc b/qcsrc/server/w_rocketlauncher.qc index 6abe83b93..6c1489249 100644 --- a/qcsrc/server/w_rocketlauncher.qc +++ b/qcsrc/server/w_rocketlauncher.qc @@ -7,13 +7,7 @@ REGISTER_WEAPON(ROCKET_LAUNCHER, w_rlauncher, IT_ROCKETS, 9, WEP_FLAG_NORMAL | W void W_RocketLauncher_Reload() { - self.reload_ammo_player = ammo_rockets; - self.reload_ammo_min = autocvar_g_balance_rocketlauncher_ammo; - self.reload_ammo_amount = autocvar_g_balance_rocketlauncher_reload_ammo; - self.reload_time = autocvar_g_balance_rocketlauncher_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_rockets, autocvar_g_balance_rocketlauncher_ammo, autocvar_g_balance_rocketlauncher_reload_ammo, autocvar_g_balance_rocketlauncher_reload_time, "weapons/reload.wav"); } void W_Rocket_Unregister() diff --git a/qcsrc/server/w_seeker.qc b/qcsrc/server/w_seeker.qc index 45bfd240d..978bbcd9c 100644 --- a/qcsrc/server/w_seeker.qc +++ b/qcsrc/server/w_seeker.qc @@ -7,13 +7,7 @@ REGISTER_WEAPON(SEEKER, w_seeker, IT_ROCKETS, 8, WEP_FLAG_NORMAL | WEP_FLAG_RELO void W_Seeker_Reload() { - self.reload_ammo_player = ammo_rockets; - self.reload_ammo_min = min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo); - self.reload_ammo_amount = autocvar_g_balance_seeker_reload_ammo; - self.reload_time = autocvar_g_balance_seeker_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_rockets, min(autocvar_g_balance_seeker_missile_ammo, autocvar_g_balance_seeker_tag_ammo), autocvar_g_balance_seeker_reload_ammo, autocvar_g_balance_seeker_reload_time, "weapons/reload.wav"); } void Seeker_Missile_Explode () diff --git a/qcsrc/server/w_shotgun.qc b/qcsrc/server/w_shotgun.qc index ff07f82b2..22abbd36b 100644 --- a/qcsrc/server/w_shotgun.qc +++ b/qcsrc/server/w_shotgun.qc @@ -5,13 +5,7 @@ REGISTER_WEAPON(SHOTGUN, w_shotgun, IT_SHELLS, 2, WEP_FLAG_NORMAL | WEP_FLAG_REL void W_Shotgun_Reload() { - self.reload_ammo_player = ammo_shells; - self.reload_ammo_min = autocvar_g_balance_shotgun_primary_ammo; - self.reload_ammo_amount = autocvar_g_balance_shotgun_reload_ammo; - self.reload_time = autocvar_g_balance_shotgun_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_shells, autocvar_g_balance_shotgun_primary_ammo, autocvar_g_balance_shotgun_reload_ammo, autocvar_g_balance_shotgun_reload_time, "weapons/reload.wav"); } void W_Shotgun_Attack (void) diff --git a/qcsrc/server/w_sniperrifle.qc b/qcsrc/server/w_sniperrifle.qc index 57d21b36a..f099cc637 100644 --- a/qcsrc/server/w_sniperrifle.qc +++ b/qcsrc/server/w_sniperrifle.qc @@ -10,13 +10,7 @@ REGISTER_WEAPON(SNIPERRIFLE, w_sniperrifle, IT_NAILS, 7, WEP_FLAG_NORMAL | WEP_F void W_SniperRifle_Reload() { - self.reload_ammo_player = ammo_nails; - self.reload_ammo_min = min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo); - self.reload_ammo_amount = autocvar_g_balance_sniperrifle_reload_ammo; - self.reload_time = autocvar_g_balance_sniperrifle_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_nails, min(autocvar_g_balance_sniperrifle_primary_ammo, autocvar_g_balance_sniperrifle_secondary_ammo), autocvar_g_balance_sniperrifle_reload_ammo, autocvar_g_balance_sniperrifle_reload_time, "weapons/reload.wav"); } void W_SniperRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAddedDamage, float pForce, float pSpeed, float pLifetime, float pAmmo, float deathtype, float pBulletConstant) diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc index b30cf2dd1..42929c147 100644 --- a/qcsrc/server/w_uzi.qc +++ b/qcsrc/server/w_uzi.qc @@ -5,13 +5,7 @@ REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | void W_UZI_Reload() { - self.reload_ammo_player = ammo_nails; - self.reload_ammo_min = min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo); - self.reload_ammo_amount = autocvar_g_balance_uzi_reload_ammo; - self.reload_time = autocvar_g_balance_uzi_reload_time; - self.reload_sound = "weapons/reload.wav"; - - W_Reload(); + W_Reload(ammo_nails, min(max(autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_first_ammo), autocvar_g_balance_uzi_burst_ammo), autocvar_g_balance_uzi_reload_ammo, autocvar_g_balance_uzi_reload_time, "weapons/reload.wav"); } // leilei's fancy muzzleflash stuff