AccessOverriderComponent.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Content.Shared.Access.Systems;
  2. using Content.Shared.Containers.ItemSlots;
  3. using Robust.Shared.Audio;
  4. using Robust.Shared.GameStates;
  5. using Robust.Shared.Prototypes;
  6. using Robust.Shared.Serialization;
  7. namespace Content.Shared.Access.Components;
  8. [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
  9. [Access(typeof(SharedAccessOverriderSystem))]
  10. public sealed partial class AccessOverriderComponent : Component
  11. {
  12. public static string PrivilegedIdCardSlotId = "AccessOverrider-privilegedId";
  13. [DataField]
  14. public ItemSlot PrivilegedIdSlot = new();
  15. [ViewVariables(VVAccess.ReadWrite)]
  16. [DataField]
  17. public SoundSpecifier? DenialSound;
  18. public EntityUid TargetAccessReaderId = new();
  19. [Serializable, NetSerializable]
  20. public sealed class WriteToTargetAccessReaderIdMessage : BoundUserInterfaceMessage
  21. {
  22. public readonly List<ProtoId<AccessLevelPrototype>> AccessList;
  23. public WriteToTargetAccessReaderIdMessage(List<ProtoId<AccessLevelPrototype>> accessList)
  24. {
  25. AccessList = accessList;
  26. }
  27. }
  28. [DataField, AutoNetworkedField]
  29. public List<ProtoId<AccessLevelPrototype>> AccessLevels = new();
  30. [ViewVariables(VVAccess.ReadWrite)]
  31. [DataField]
  32. public float DoAfter;
  33. [Serializable, NetSerializable]
  34. public sealed class AccessOverriderBoundUserInterfaceState : BoundUserInterfaceState
  35. {
  36. public readonly string TargetLabel;
  37. public readonly Color TargetLabelColor;
  38. public readonly string PrivilegedIdName;
  39. public readonly bool IsPrivilegedIdPresent;
  40. public readonly bool IsPrivilegedIdAuthorized;
  41. public readonly ProtoId<AccessLevelPrototype>[]? TargetAccessReaderIdAccessList;
  42. public readonly ProtoId<AccessLevelPrototype>[]? AllowedModifyAccessList;
  43. public readonly ProtoId<AccessLevelPrototype>[]? MissingPrivilegesList;
  44. public AccessOverriderBoundUserInterfaceState(bool isPrivilegedIdPresent,
  45. bool isPrivilegedIdAuthorized,
  46. ProtoId<AccessLevelPrototype>[]? targetAccessReaderIdAccessList,
  47. ProtoId<AccessLevelPrototype>[]? allowedModifyAccessList,
  48. ProtoId<AccessLevelPrototype>[]? missingPrivilegesList,
  49. string privilegedIdName,
  50. string targetLabel,
  51. Color targetLabelColor)
  52. {
  53. IsPrivilegedIdPresent = isPrivilegedIdPresent;
  54. IsPrivilegedIdAuthorized = isPrivilegedIdAuthorized;
  55. TargetAccessReaderIdAccessList = targetAccessReaderIdAccessList;
  56. AllowedModifyAccessList = allowedModifyAccessList;
  57. MissingPrivilegesList = missingPrivilegesList;
  58. PrivilegedIdName = privilegedIdName;
  59. TargetLabel = targetLabel;
  60. TargetLabelColor = targetLabelColor;
  61. }
  62. }
  63. [Serializable, NetSerializable]
  64. public enum AccessOverriderUiKey : byte
  65. {
  66. Key,
  67. }
  68. }