fix(FaxVisualsSystem): Fax can Play() when a anim key has been added. (#30013)

Adds a check to see if a faxecute animation is being played before
playing another animation. The old code can thrown an exception which
I've seen on live while ghosting.

(cherry picked from commit b04f98513c498c9994caaa7c8412e67a19dc6c3e)
This commit is contained in:
CaasGit
2024-07-19 20:36:22 -07:00
committed by Spatison
parent 9c623d25a7
commit f9efc46eb0

View File

@@ -25,24 +25,30 @@ public sealed class FaxVisualsSystem : EntitySystem
if (args.Sprite == null)
return;
if (_appearance.TryGetData(uid, FaxMachineVisuals.VisualState, out FaxMachineVisualState visuals) && visuals == FaxMachineVisualState.Inserting)
if (_player.HasRunningAnimation(uid, "faxecute"))
return;
if (_appearance.TryGetData(uid, FaxMachineVisuals.VisualState, out FaxMachineVisualState visuals) &&
visuals == FaxMachineVisualState.Inserting)
{
_player.Play(uid, new Animation()
{
Length = TimeSpan.FromSeconds(2.4),
AnimationTracks =
_player.Play(uid,
new Animation()
{
new AnimationTrackSpriteFlick()
Length = TimeSpan.FromSeconds(2.4),
AnimationTracks =
{
LayerKey = FaxMachineVisuals.VisualState,
KeyFrames =
new AnimationTrackSpriteFlick()
{
new AnimationTrackSpriteFlick.KeyFrame(component.InsertingState, 0f),
new AnimationTrackSpriteFlick.KeyFrame("icon", 2.4f),
}
}
}
}, "faxecute");
LayerKey = FaxMachineVisuals.VisualState,
KeyFrames =
{
new AnimationTrackSpriteFlick.KeyFrame(component.InsertingState, 0f),
new AnimationTrackSpriteFlick.KeyFrame("icon", 2.4f),
},
},
},
},
"faxecute");
}
}
}