using Content.Shared.Chat; using Content.Shared.Tools; using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Radio.Components; /// /// This component is by entities that can contain encryption keys /// [RegisterComponent] public sealed partial class EncryptionKeyHolderComponent : Component { /// /// Whether or not encryption keys can be removed from the headset. /// [DataField] public bool KeysUnlocked = true; /// /// The tool required to extract the encryption keys from the headset. /// [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string KeysExtractionMethod = "Screwing"; [DataField] public int KeySlots = 2; [DataField] public SoundSpecifier KeyExtractionSound = new SoundPathSpecifier("/Audio/Items/pistol_magout.ogg"); [DataField] public SoundSpecifier KeyInsertionSound = new SoundPathSpecifier("/Audio/Items/pistol_magin.ogg"); [ViewVariables] public Container KeyContainer = default!; public const string KeyContainerName = "key_slots"; /// /// Whether or not the headset can be examined to see the encryption keys while the keys aren't accessible. /// [DataField] public bool ExamineWhileLocked = true; /// /// Combined set of radio channels provided by all contained keys. /// [ViewVariables] public HashSet Channels = new(); /// /// This is the channel that will be used when using the default/department prefix (). /// [ViewVariables] public string? DefaultChannel; }