#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);
}
}
}