#nullable enable using System.Collections.Generic; using Content.Server.Interfaces; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Access { /// /// Simple mutable access provider found on ID cards and such. /// [RegisterComponent] [ComponentReference(typeof(IAccess))] public class AccessComponent : Component, IAccess { public override string Name => "Access"; [ViewVariables] private readonly HashSet _tags = new(); public ISet Tags => _tags; public bool IsReadOnly => false; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataReadWriteFunction("tags", new List(), value => { _tags.Clear(); _tags.UnionWith(value); }, () => new List(_tags)); } public void SetTags(IEnumerable newTags) { _tags.Clear(); _tags.UnionWith(newTags); } } }