namespace Content.Server.Chat; using Content.Server.Chat.Systems; using Content.Shared.Chat.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; /// /// Causes an entity to automatically emote at a set interval. /// [RegisterComponent, Access(typeof(AutoEmoteSystem))] public sealed partial class AutoEmoteComponent : Component { /// /// A set of emotes that the entity will preform. /// /// [DataField("emotes", customTypeSerializer: typeof(PrototypeIdHashSetSerializer)), ViewVariables(VVAccess.ReadOnly)] public HashSet Emotes = new HashSet(); /// /// A dictionary storing the time of the next emote attempt for each emote. /// Uses AutoEmotePrototype IDs as keys. /// [ViewVariables(VVAccess.ReadOnly)] //TODO: make this a datafield and (de)serialize values as time offsets when https://github.com/space-wizards/RobustToolbox/issues/3768 is fixed public Dictionary EmoteTimers = new Dictionary(); /// /// Time of the next emote. Redundant, but avoids having to iterate EmoteTimers each update. /// [ViewVariables(VVAccess.ReadOnly)] public TimeSpan NextEmoteTime = TimeSpan.MaxValue; }