using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; namespace Content.Shared.DeviceLinking; [RegisterComponent, NetworkedComponent] [Access(typeof(SharedDeviceLinkSystem))] public sealed partial class DeviceLinkSinkComponent : Component { /// /// The ports this sink has /// [DataField] public HashSet> Ports = new(); /// /// Used for removing a sink from all linked sources when this component gets removed. /// This is not serialized to yaml as it can be inferred from source components. /// [ViewVariables] public HashSet LinkedSources = new(); /// /// Counts the amount of times a sink has been invoked for severing the link if this counter gets to high /// The counter is counted down by one every tick if it's higher than 0 /// This is for preventing infinite loops /// [DataField] public int InvokeCounter; /// /// How high the invoke counter is allowed to get before the links to the sink are removed and the DeviceLinkOverloadedEvent gets raised /// If the invoke limit is 0 or less, the limit is ignored. /// [DataField] public int InvokeLimit = 10; }