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 class EncryptionKeyHolderComponent : Component { /// /// Whether or not encryption keys can be removed from the headset. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("keysUnlocked")] public bool KeysUnlocked = true; /// /// The tool required to extract the encryption keys from the headset. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("keysExtractionMethod", customTypeSerializer: typeof(PrototypeIdSerializer))] public string KeysExtractionMethod = "Screwing"; [ViewVariables(VVAccess.ReadWrite)] [DataField("keySlots")] public int KeySlots = 2; [ViewVariables(VVAccess.ReadWrite)] [DataField("keyExtractionSound")] public SoundSpecifier KeyExtractionSound = new SoundPathSpecifier("/Audio/Items/pistol_magout.ogg"); [ViewVariables(VVAccess.ReadWrite)] [DataField("keyInsertionSound")] public SoundSpecifier KeyInsertionSound = new SoundPathSpecifier("/Audio/Items/pistol_magin.ogg"); [ViewVariables] public Container KeyContainer = default!; public const string KeyContainerName = "key_slots"; /// /// Blocks multiple attempts to remove the key /// [DataField("removing")] public bool Removing; /// /// 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; }