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;
}