Cache the notifyAttacks in AttackGarrisoned
This commit is contained in:
@@ -78,6 +78,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class AttackGarrisoned : AttackFollow, INotifyPassengerEntered, INotifyPassengerExited, IRender
|
public class AttackGarrisoned : AttackFollow, INotifyPassengerEntered, INotifyPassengerExited, IRender
|
||||||
{
|
{
|
||||||
public new readonly AttackGarrisonedInfo Info;
|
public new readonly AttackGarrisonedInfo Info;
|
||||||
|
INotifyAttack[] notifyAttacks;
|
||||||
readonly Lazy<BodyOrientation> coords;
|
readonly Lazy<BodyOrientation> coords;
|
||||||
readonly List<Armament> armaments;
|
readonly List<Armament> armaments;
|
||||||
readonly List<AnimationWithOffset> muzzles;
|
readonly List<AnimationWithOffset> muzzles;
|
||||||
@@ -97,6 +98,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
paxRender = new Dictionary<Actor, RenderSprites>();
|
paxRender = new Dictionary<Actor, RenderSprites>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void Created(Actor self)
|
||||||
|
{
|
||||||
|
notifyAttacks = self.TraitsImplementing<INotifyAttack>().ToArray();
|
||||||
|
base.Created(self);
|
||||||
|
}
|
||||||
|
|
||||||
protected override Func<IEnumerable<Armament>> InitializeGetArmaments(Actor self)
|
protected override Func<IEnumerable<Armament>> InitializeGetArmaments(Actor self)
|
||||||
{
|
{
|
||||||
return () => armaments;
|
return () => armaments;
|
||||||
@@ -182,7 +189,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
muzzleAnim.PlayThen(sequence, () => muzzles.Remove(muzzleFlash));
|
muzzleAnim.PlayThen(sequence, () => muzzles.Remove(muzzleFlash));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var npa in self.TraitsImplementing<INotifyAttack>())
|
foreach (var npa in notifyAttacks)
|
||||||
npa.Attacking(self, target, a, barrel);
|
npa.Attacking(self, target, a, barrel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user