Files
wylab-station-14/Content.Shared/Access/Components/AccessOverriderComponent.cs
Samuka 0fb6f26edb Xenoborg door control module (#41546)
* add door control module

* some commentary

* can't eject stuff anymore

* make xenoborg door remote eletrify doors

* clean yml

* anchors and aliases

* not show stuff about id in xenoborg access config

* engi xenoborg can see eletrified doors
2025-12-16 01:24:54 +00:00

90 lines
3.2 KiB
C#

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";
/// <summary>
/// If the Access Overrider UI will show info about the privileged ID
/// </summary>
[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<ProtoId<AccessLevelPrototype>> AccessList;
public WriteToTargetAccessReaderIdMessage(List<ProtoId<AccessLevelPrototype>> accessList)
{
AccessList = accessList;
}
}
[DataField, AutoNetworkedField]
public List<ProtoId<AccessLevelPrototype>> 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<AccessLevelPrototype>[]? TargetAccessReaderIdAccessList;
public readonly ProtoId<AccessLevelPrototype>[]? AllowedModifyAccessList;
public readonly ProtoId<AccessLevelPrototype>[]? MissingPrivilegesList;
public AccessOverriderBoundUserInterfaceState(bool isPrivilegedIdPresent,
bool isPrivilegedIdAuthorized,
ProtoId<AccessLevelPrototype>[]? targetAccessReaderIdAccessList,
ProtoId<AccessLevelPrototype>[]? allowedModifyAccessList,
ProtoId<AccessLevelPrototype>[]? 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,
}
}