Make repair overlay invisible when not repairing

This commit is contained in:
reaperrr
2015-09-19 20:30:22 +02:00
parent e99c951a0c
commit 58e474ec80

View File

@@ -39,6 +39,7 @@ namespace OpenRA.Mods.Common.Traits
{ {
readonly Animation overlay; readonly Animation overlay;
bool buildComplete; bool buildComplete;
bool visible;
public WithRepairOverlay(Actor self, WithRepairOverlayInfo info) public WithRepairOverlay(Actor self, WithRepairOverlayInfo info)
{ {
@@ -47,11 +48,11 @@ namespace OpenRA.Mods.Common.Traits
buildComplete = !self.Info.HasTraitInfo<BuildingInfo>(); // always render instantly for units buildComplete = !self.Info.HasTraitInfo<BuildingInfo>(); // always render instantly for units
overlay = new Animation(self.World, rs.GetImage(self)); overlay = new Animation(self.World, rs.GetImage(self));
overlay.Play(info.Sequence); overlay.PlayThen(info.Sequence, () => visible = false);
var anim = new AnimationWithOffset(overlay, var anim = new AnimationWithOffset(overlay,
() => body.LocalToWorld(info.Offset.Rotate(body.QuantizeOrientation(self, self.Orientation))), () => body.LocalToWorld(info.Offset.Rotate(body.QuantizeOrientation(self, self.Orientation))),
() => !buildComplete, () => !visible || !buildComplete,
() => info.PauseOnLowPower && self.IsDisabled(), () => info.PauseOnLowPower && self.IsDisabled(),
p => WithTurret.ZOffsetFromCenter(self, p, 1)); p => WithTurret.ZOffsetFromCenter(self, p, 1));
@@ -77,7 +78,8 @@ namespace OpenRA.Mods.Common.Traits
public void Repairing(Actor self, Actor host) public void Repairing(Actor self, Actor host)
{ {
overlay.Play(overlay.CurrentSequence.Name); visible = true;
overlay.PlayThen(overlay.CurrentSequence.Name, () => visible = false);
} }
} }
} }