using Content.Shared.Doors.Components; using Content.Shared.Doors.Systems; using Robust.Client.Animations; using Robust.Client.GameObjects; namespace Content.Client.Doors; /// public sealed partial class TurnstileSystem : SharedTurnstileSystem { [Dependency] private AppearanceSystem _appearance = default!; [Dependency] private AnimationPlayerSystem _animation = default!; private const string AnimationKey = "Turnstile"; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAnimationCompleted); } private void OnAnimationCompleted(Entity ent, ref AnimationCompletedEvent args) { if (args.Key != AnimationKey) return; _appearance.SetData(ent, TurnstileVisualLayers.Base, TurnstileStates.Idle); } protected override void PlayAnimation(EntityUid uid, TurnstileStates state) { if (!TryComp(uid, out var animation)) return; if (_animation.HasRunningAnimation(uid, AnimationKey) || !TryComp(uid, out var turnComp)) return; var anim = new Animation { Length = turnComp.AnimationCooldown, }; _animation.Play((uid, animation), anim, AnimationKey); _appearance.SetData(uid, TurnstileVisualLayers.Base, state); } }