Make WithSpriteBody.PlayCustomAnimation resume loop of Sequence

...after it finished playing.
This commit is contained in:
reaperrr
2017-07-28 15:07:19 +02:00
committed by abcdefg30
parent 90a4fe7ca1
commit 0103b7ca87
8 changed files with 9 additions and 10 deletions

View File

@@ -75,8 +75,7 @@ namespace OpenRA.Mods.Common.Traits.Render
if (!IsTraitDisabled && !wsb.IsTraitDisabled && !string.IsNullOrEmpty(Info.AttackSequence)) if (!IsTraitDisabled && !wsb.IsTraitDisabled && !string.IsNullOrEmpty(Info.AttackSequence))
{ {
attackAnimPlaying = true; attackAnimPlaying = true;
wsb.PlayCustomAnimation(self, Info.AttackSequence, wsb.PlayCustomAnimation(self, Info.AttackSequence, () => attackAnimPlaying = false);
() => { wsb.CancelCustomAnimation(self); attackAnimPlaying = false; });
} }
} }

View File

@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits.Render
void INotifyBuildingPlaced.BuildingPlaced(Actor self) void INotifyBuildingPlaced.BuildingPlaced(Actor self)
{ {
if (buildComplete) if (buildComplete)
wsb.PlayCustomAnimation(self, info.Sequence, () => wsb.CancelCustomAnimation(self)); wsb.PlayCustomAnimation(self, info.Sequence);
} }
} }
} }

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Traits.Render
if (--ticks <= 0) if (--ticks <= 0)
{ {
wsb.PlayCustomAnimation(self, Info.Sequences.Random(Game.CosmeticRandom), () => wsb.CancelCustomAnimation(self)); wsb.PlayCustomAnimation(self, Info.Sequences.Random(Game.CosmeticRandom));
ticks = Info.Interval; ticks = Info.Interval;
} }
} }

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Traits.Render
void INotifyRearm.Rearming(Actor self, Actor target) void INotifyRearm.Rearming(Actor self, Actor target)
{ {
if (buildComplete && spriteBody != null && !IsTraitDisabled) if (buildComplete && spriteBody != null && !IsTraitDisabled)
spriteBody.PlayCustomAnimation(self, Info.Sequence, () => spriteBody.CancelCustomAnimation(self)); spriteBody.PlayCustomAnimation(self, Info.Sequence);
} }
void INotifyBuildComplete.BuildingComplete(Actor self) void INotifyBuildComplete.BuildingComplete(Actor self)

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Traits.Render
void INotifyRepair.Repairing(Actor self, Actor target) void INotifyRepair.Repairing(Actor self, Actor target)
{ {
if (buildComplete && spriteBody != null && !IsTraitDisabled) if (buildComplete && spriteBody != null && !IsTraitDisabled)
spriteBody.PlayCustomAnimation(self, Info.Sequence, () => spriteBody.CancelCustomAnimation(self)); spriteBody.PlayCustomAnimation(self, Info.Sequence);
} }
void INotifyBuildComplete.BuildingComplete(Actor self) void INotifyBuildComplete.BuildingComplete(Actor self)

View File

@@ -93,7 +93,7 @@ namespace OpenRA.Mods.Common.Traits.Render
{ {
DefaultAnimation.PlayThen(NormalizeSequence(self, name), () => DefaultAnimation.PlayThen(NormalizeSequence(self, name), () =>
{ {
DefaultAnimation.Play(NormalizeSequence(self, Info.Sequence)); CancelCustomAnimation(self);
if (after != null) if (after != null)
after(); after();
}); });
@@ -109,7 +109,7 @@ namespace OpenRA.Mods.Common.Traits.Render
{ {
DefaultAnimation.PlayBackwardsThen(NormalizeSequence(self, name), () => DefaultAnimation.PlayBackwardsThen(NormalizeSequence(self, name), () =>
{ {
DefaultAnimation.PlayRepeating(NormalizeSequence(self, Info.Sequence)); CancelCustomAnimation(self);
if (after != null) if (after != null)
after(); after();
}); });

View File

@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Traits
var wsb = self.TraitOrDefault<WithSpriteBody>(); var wsb = self.TraitOrDefault<WithSpriteBody>();
if (wsb != null && wsb.DefaultAnimation.HasSequence(info.Sequence)) if (wsb != null && wsb.DefaultAnimation.HasSequence(info.Sequence))
wsb.PlayCustomAnimation(self, info.Sequence, () => wsb.CancelCustomAnimation(self)); wsb.PlayCustomAnimation(self, info.Sequence);
Game.Sound.Play(SoundType.World, info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation)); Game.Sound.Play(SoundType.World, info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation));

View File

@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Traits
if (!string.IsNullOrEmpty(info.ActivationSequence)) if (!string.IsNullOrEmpty(info.ActivationSequence))
{ {
var wsb = self.Trait<WithSpriteBody>(); var wsb = self.Trait<WithSpriteBody>();
wsb.PlayCustomAnimation(self, info.ActivationSequence, () => wsb.CancelCustomAnimation(self)); wsb.PlayCustomAnimation(self, info.ActivationSequence);
} }
var targetPosition = self.World.Map.CenterOfCell(order.TargetLocation); var targetPosition = self.World.Map.CenterOfCell(order.TargetLocation);