diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index e979a7ce14..d48409292a 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -124,7 +124,6 @@ namespace OpenRA.Traits } } - public interface INotifyAttack { void Attacking(Actor self, Target target); } public interface IRenderModifier { IEnumerable ModifyRender(Actor self, WorldRenderer wr, IEnumerable r); } public interface IDamageModifier { float GetDamageModifier(Actor attacker, WarheadInfo warhead); } public interface ISpeedModifier { decimal GetSpeedModifier(); } diff --git a/OpenRA.Mods.RA/Activities/LayMines.cs b/OpenRA.Mods.RA/Activities/LayMines.cs index 777bcd7671..1cd5bfbeda 100644 --- a/OpenRA.Mods.RA/Activities/LayMines.cs +++ b/OpenRA.Mods.RA/Activities/LayMines.cs @@ -74,7 +74,8 @@ namespace OpenRA.Mods.RA.Activities void LayMine(Actor self) { var limitedAmmo = self.TraitOrDefault(); - if (limitedAmmo != null) limitedAmmo.Attacking(self, Target.FromCell(self.Location)); + if (limitedAmmo != null) + limitedAmmo.TakeAmmo(); self.World.AddFrameEndTask( w => w.CreateActor(self.Info.Traits.Get().Mine, new TypeDictionary diff --git a/OpenRA.Mods.RA/Armament.cs b/OpenRA.Mods.RA/Armament.cs index 5e3c018146..b888a08757 100755 --- a/OpenRA.Mods.RA/Armament.cs +++ b/OpenRA.Mods.RA/Armament.cs @@ -151,7 +151,7 @@ namespace OpenRA.Mods.RA }); foreach (var na in self.TraitsImplementing()) - na.Attacking(self, target); + na.Attacking(self, target, this, barrel); Recoil = Info.Recoil; diff --git a/OpenRA.Mods.RA/Attack/AttackTesla.cs b/OpenRA.Mods.RA/Attack/AttackTesla.cs index fe0ae52b9c..034fc66dcf 100644 --- a/OpenRA.Mods.RA/Attack/AttackTesla.cs +++ b/OpenRA.Mods.RA/Attack/AttackTesla.cs @@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA base.Tick( self ); } - public void Attacking(Actor self, Target target) + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { --charges; timeToRecharge = self.Info.Traits.Get().ReloadTime; diff --git a/OpenRA.Mods.RA/Cloak.cs b/OpenRA.Mods.RA/Cloak.cs index 6e6a08f6a9..e2dc8ccc3d 100644 --- a/OpenRA.Mods.RA/Cloak.cs +++ b/OpenRA.Mods.RA/Cloak.cs @@ -56,7 +56,7 @@ namespace OpenRA.Mods.RA remainingTime = Math.Max(remainingTime, time); } - public void Attacking(Actor self, Target target) { Uncloak(); } + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { Uncloak(); } public bool Cloaked { get { return remainingTime <= 0; } } diff --git a/OpenRA.Mods.RA/LimitedAmmo.cs b/OpenRA.Mods.RA/LimitedAmmo.cs index da5dee09ce..2444163c1e 100644 --- a/OpenRA.Mods.RA/LimitedAmmo.cs +++ b/OpenRA.Mods.RA/LimitedAmmo.cs @@ -44,6 +44,7 @@ namespace OpenRA.Mods.RA ++ammo; return true; } + public bool TakeAmmo() { if (ammo <= 0) return false; @@ -53,7 +54,7 @@ namespace OpenRA.Mods.RA public int ReloadTimePerAmmo() { return Info.ReloadTicks; } - public void Attacking(Actor self, Target target) { TakeAmmo(); } + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { TakeAmmo(); } public IEnumerable GetPips(Actor self) { diff --git a/OpenRA.Mods.RA/Render/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs index c23055f3a6..387ef12584 100644 --- a/OpenRA.Mods.RA/Render/RenderInfantry.cs +++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs @@ -74,6 +74,11 @@ namespace OpenRA.Mods.RA.Render anim.PlayThen(NormalizeInfantrySequence(self, "heal"), () => State = AnimationState.Idle); } + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) + { + Attacking(self, target); + } + public override void Tick(Actor self) { base.Tick(self); diff --git a/OpenRA.Mods.RA/Render/WithMuzzleFlash.cs b/OpenRA.Mods.RA/Render/WithMuzzleFlash.cs index f7945d75ac..ab2e88da00 100644 --- a/OpenRA.Mods.RA/Render/WithMuzzleFlash.cs +++ b/OpenRA.Mods.RA/Render/WithMuzzleFlash.cs @@ -52,7 +52,7 @@ namespace OpenRA.Mods.RA.Render } } - public void Attacking(Actor self, Target target) + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { isShowing = true; foreach( var mf in muzzleFlashes.Values ) diff --git a/OpenRA.Mods.RA/ScaredyCat.cs b/OpenRA.Mods.RA/ScaredyCat.cs index 2696e6c637..33a536c1dc 100644 --- a/OpenRA.Mods.RA/ScaredyCat.cs +++ b/OpenRA.Mods.RA/ScaredyCat.cs @@ -67,7 +67,7 @@ namespace OpenRA.Mods.RA Panic(); } - public void Attacking(Actor self, Target target) + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { if (self.World.SharedRandom.Next(100 / Info.AttackPanicChance) == 0) Panic(); diff --git a/OpenRA.Mods.RA/Spy.cs b/OpenRA.Mods.RA/Spy.cs index 883c31c34d..7b7553ae60 100644 --- a/OpenRA.Mods.RA/Spy.cs +++ b/OpenRA.Mods.RA/Spy.cs @@ -137,7 +137,7 @@ namespace OpenRA.Mods.RA } /* lose our disguise if we attack anything */ - public void Attacking(Actor self, Target target) { DropDisguise(); } + public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { DropDisguise(); } } class IgnoresDisguiseInfo : TraitInfo {} diff --git a/OpenRA.Mods.RA/TraitsInterfaces.cs b/OpenRA.Mods.RA/TraitsInterfaces.cs index b672a11345..3a0db48bc9 100755 --- a/OpenRA.Mods.RA/TraitsInterfaces.cs +++ b/OpenRA.Mods.RA/TraitsInterfaces.cs @@ -10,6 +10,7 @@ using System.Collections.Generic; using OpenRA.Mods.RA.Activities; +using OpenRA.Traits; namespace OpenRA.Mods.RA { @@ -46,4 +47,5 @@ namespace OpenRA.Mods.RA public interface INotifyParachuteLanded { void OnLanded(); } public interface INotifyTransform { void OnTransform(Actor self); } public interface INotifyTransformed { void OnTransformed(Actor toActor); } + public interface INotifyAttack { void Attacking(Actor self, Target target, Armament a, Barrel barrel); } }