using Content.Shared.DeviceLinking; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.Anomaly.Components; /// /// a device that allows you to translate anomaly activity into multitool signals. /// [RegisterComponent, AutoGenerateComponentPause, Access(typeof(AnomalySynchronizerSystem))] public sealed partial class AnomalySynchronizerComponent : Component { /// /// The uid of the anomaly to which the synchronizer is connected. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public EntityUid? ConnectedAnomaly; /// /// Should the anomaly pulse when connected to the synchronizer? /// [DataField] public bool PulseOnConnect = true; /// /// Should the anomaly pulse when disconnected from synchronizer? /// [DataField] public bool PulseOnDisconnect = false; /// /// minimum distance from the synchronizer to the anomaly to be attached /// [DataField] public float AttachRange = 0.4f; /// /// Periodicheski checks to see if the anomaly has moved to disconnect it. /// [DataField] public TimeSpan CheckFrequency = TimeSpan.FromSeconds(1f); [DataField, AutoPausedField] public TimeSpan NextCheckTime = TimeSpan.Zero; [DataField] public ProtoId DecayingPort = "Decaying"; [DataField] public ProtoId StabilizePort = "Stabilize"; [DataField] public ProtoId GrowingPort = "Growing"; [DataField] public ProtoId PulsePort = "Pulse"; [DataField] public ProtoId SupercritPort = "Supercritical"; [DataField, ViewVariables(VVAccess.ReadWrite)] public SoundSpecifier ConnectedSound = new SoundPathSpecifier("/Audio/Machines/anomaly_sync_connect.ogg"); [DataField, ViewVariables(VVAccess.ReadWrite)] public SoundSpecifier DisconnectedSound = new SoundPathSpecifier("/Audio/Machines/anomaly_sync_connect.ogg"); }