using Content.Shared.Access.Systems;
using Content.Shared.Containers.ItemSlots;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Access.Components;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
[Access(typeof(SharedAccessOverriderSystem))]
public sealed partial class AccessOverriderComponent : Component
{
public static string PrivilegedIdCardSlotId = "AccessOverrider-privilegedId";
///
/// If the Access Overrider UI will show info about the privileged ID
///
[DataField]
public bool ShowPrivilegedId = true;
[DataField]
public ItemSlot PrivilegedIdSlot = new();
[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public SoundSpecifier? DenialSound;
public EntityUid TargetAccessReaderId = new();
[Serializable, NetSerializable]
public sealed class WriteToTargetAccessReaderIdMessage : BoundUserInterfaceMessage
{
public readonly List> AccessList;
public WriteToTargetAccessReaderIdMessage(List> accessList)
{
AccessList = accessList;
}
}
[DataField, AutoNetworkedField]
public List> AccessLevels = new();
[ViewVariables(VVAccess.ReadWrite)]
[DataField]
public float DoAfter;
[Serializable, NetSerializable]
public sealed class AccessOverriderBoundUserInterfaceState : BoundUserInterfaceState
{
public readonly string TargetLabel;
public readonly Color TargetLabelColor;
public readonly string PrivilegedIdName;
public readonly bool IsPrivilegedIdPresent;
public readonly bool IsPrivilegedIdAuthorized;
public readonly bool ShowPrivilegedIdGrid;
public readonly ProtoId[]? TargetAccessReaderIdAccessList;
public readonly ProtoId[]? AllowedModifyAccessList;
public readonly ProtoId[]? MissingPrivilegesList;
public AccessOverriderBoundUserInterfaceState(bool isPrivilegedIdPresent,
bool isPrivilegedIdAuthorized,
ProtoId[]? targetAccessReaderIdAccessList,
ProtoId[]? allowedModifyAccessList,
ProtoId[]? missingPrivilegesList,
string privilegedIdName,
string targetLabel,
Color targetLabelColor,
bool showPrivilegedIdGrid)
{
IsPrivilegedIdPresent = isPrivilegedIdPresent;
IsPrivilegedIdAuthorized = isPrivilegedIdAuthorized;
TargetAccessReaderIdAccessList = targetAccessReaderIdAccessList;
AllowedModifyAccessList = allowedModifyAccessList;
MissingPrivilegesList = missingPrivilegesList;
PrivilegedIdName = privilegedIdName;
TargetLabel = targetLabel;
TargetLabelColor = targetLabelColor;
ShowPrivilegedIdGrid = showPrivilegedIdGrid;
}
}
[Serializable, NetSerializable]
public enum AccessOverriderUiKey : byte
{
Key,
}
}