diff --git a/OpenRa.Game/Traits/Activities/Rearm.cs b/OpenRa.Game/Traits/Activities/Rearm.cs index 154334fb13..1d872894f1 100644 --- a/OpenRa.Game/Traits/Activities/Rearm.cs +++ b/OpenRa.Game/Traits/Activities/Rearm.cs @@ -1,4 +1,6 @@ -namespace OpenRa.Game.Traits.Activities +using System.Linq; + +namespace OpenRa.Game.Traits.Activities { class Rearm : IActivity { @@ -17,6 +19,13 @@ if (--remainingTicks == 0) { if (!limitedAmmo.GiveAmmo()) return NextActivity; + + var hostBuilding = Game.FindUnits(self.CenterLocation, self.CenterLocation) + .FirstOrDefault(a => a.traits.Contains()); + + if (hostBuilding != null) + hostBuilding.traits.Get().PlayCustomAnim(hostBuilding, "active"); + remainingTicks = ticksPerPip; } diff --git a/OpenRa.Game/Traits/RenderBuilding.cs b/OpenRa.Game/Traits/RenderBuilding.cs index 9f67d544c5..2dd81f7266 100644 --- a/OpenRa.Game/Traits/RenderBuilding.cs +++ b/OpenRa.Game/Traits/RenderBuilding.cs @@ -56,6 +56,12 @@ namespace OpenRa.Game.Traits return self.GetDamageState() == DamageState.Half ? "damaged-" : ""; } + public void PlayCustomAnim(Actor self, string name) + { + anim.PlayThen(GetPrefix(self) + name, + () => anim.PlayRepeating(GetPrefix(self) + "idle")); + } + public virtual void Damaged(Actor self, AttackInfo e) { if (!e.DamageStateChanged)