using Content.Shared.Inventory; using Robust.Shared.Serialization; namespace Content.Shared.VoiceMask; [Serializable, NetSerializable] public enum VoiceMaskUIKey : byte { Key } [Serializable, NetSerializable] public sealed class VoiceMaskBuiState : BoundUserInterfaceState { public readonly string Name; public readonly string? Verb; public readonly bool Active; public readonly bool AccentHide; public readonly LocId TitleText; public VoiceMaskBuiState(string name, string? verb, bool active, bool accentHide, LocId titleText) { Name = name; Verb = verb; Active = active; AccentHide = accentHide; TitleText = titleText; } } [Serializable, NetSerializable] public sealed class VoiceMaskChangeNameMessage : BoundUserInterfaceMessage { public readonly string Name; public VoiceMaskChangeNameMessage(string name) { Name = name; } } /// /// Change the speech verb prototype to override, or null to use the user's verb. /// [Serializable, NetSerializable] public sealed class VoiceMaskChangeVerbMessage : BoundUserInterfaceMessage { public readonly string? Verb; public VoiceMaskChangeVerbMessage(string? verb) { Verb = verb; } } /// /// Toggle the effects of the voice mask. /// [Serializable, NetSerializable] public sealed class VoiceMaskToggleMessage : BoundUserInterfaceMessage; /// /// Toggle the effects of accent negation. /// [Serializable, NetSerializable] public sealed class VoiceMaskAccentToggleMessage : BoundUserInterfaceMessage; /// /// Fired when a voice mask is turned on. /// /// The voice mask that was turned on /// The entity that owns the voice mask /// The new value of the voice mask public sealed class VoiceMaskToggledEvent(EntityUid mask, EntityUid source, bool active) : IInventoryRelayEvent { public EntityUid Mask = mask; public EntityUid Source = source; public bool Active = active; SlotFlags IInventoryRelayEvent.TargetSlots => SlotFlags.WITHOUT_POCKET; }