From 26be2a3e99996cc77aef0445bbd3918a863c0bee Mon Sep 17 00:00:00 2001 From: reaperrr Date: Thu, 6 Jul 2017 17:42:40 +0200 Subject: [PATCH] Split Burst updating to separate method --- OpenRA.Mods.Common/Traits/Armament.cs | 43 +++++++++++++++------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Armament.cs b/OpenRA.Mods.Common/Traits/Armament.cs index 2b9f1a560d..63aac70d9e 100644 --- a/OpenRA.Mods.Common/Traits/Armament.cs +++ b/OpenRA.Mods.Common/Traits/Armament.cs @@ -238,25 +238,7 @@ namespace OpenRA.Mods.Common.Traits FireBarrel(self, facing, target, barrel); - if (--Burst > 0) - FireDelay = Weapon.BurstDelay; - else - { - var modifiers = reloadModifiers.ToArray(); - FireDelay = Util.ApplyPercentageModifiers(Weapon.ReloadDelay, modifiers); - Burst = Weapon.Burst; - - if (Weapon.AfterFireSound != null && Weapon.AfterFireSound.Any()) - { - ScheduleDelayedAction(Weapon.AfterFireSoundDelay, () => - { - Game.Sound.Play(SoundType.World, Weapon.AfterFireSound.Random(self.World.SharedRandom), self.CenterPosition); - }); - } - - foreach (var nbc in notifyBurstComplete) - nbc.FiredBurst(self, target, this); - } + UpdateBurst(self, target); return barrel; } @@ -326,6 +308,29 @@ namespace OpenRA.Mods.Common.Traits }); } + protected virtual void UpdateBurst(Actor self, Target target) + { + if (--Burst > 0) + FireDelay = Weapon.BurstDelay; + else + { + var modifiers = reloadModifiers.ToArray(); + FireDelay = Util.ApplyPercentageModifiers(Weapon.ReloadDelay, modifiers); + Burst = Weapon.Burst; + + if (Weapon.AfterFireSound != null && Weapon.AfterFireSound.Any()) + { + ScheduleDelayedAction(Weapon.AfterFireSoundDelay, () => + { + Game.Sound.Play(SoundType.World, Weapon.AfterFireSound.Random(self.World.SharedRandom), self.CenterPosition); + }); + } + + foreach (var nbc in notifyBurstComplete) + nbc.FiredBurst(self, target, this); + } + } + public virtual bool OutOfAmmo { get { return ammoPool != null && !ammoPool.Info.SelfReloads && !ammoPool.HasAmmo(); } } public virtual bool IsReloading { get { return FireDelay > 0 || IsTraitDisabled; } } public virtual bool AllowExplode { get { return !IsReloading; } }