using Content.Server.UserInterface; using Content.Shared.Communications; using Robust.Server.GameObjects; namespace Content.Server.Communications { [RegisterComponent] public sealed class CommunicationsConsoleComponent : SharedCommunicationsConsoleComponent { /// /// Remaining cooldown between making announcements. /// [ViewVariables(VVAccess.ReadWrite)] public float AnnouncementCooldownRemaining; /// /// Has the UI already been refreshed after the announcement /// public bool AlreadyRefreshed = false; /// /// Fluent ID for the announcement title /// If a Fluent ID isn't found, just uses the raw string /// [ViewVariables(VVAccess.ReadWrite)] [DataField("title", required: true)] public string AnnouncementDisplayName = "comms-console-announcement-title-station"; /// /// Announcement color /// [ViewVariables(VVAccess.ReadWrite)] [DataField("color")] public Color AnnouncementColor = Color.Gold; /// /// Time in seconds between announcement delays on a per-console basis /// [ViewVariables(VVAccess.ReadWrite)] [DataField("delay")] public int DelayBetweenAnnouncements = 90; /// /// Can call or recall the shuttle /// [ViewVariables(VVAccess.ReadWrite)] [DataField("canShuttle")] public bool CanCallShuttle = true; /// /// Announce on all grids (for nukies) /// [DataField("global")] public bool AnnounceGlobal = false; public BoundUserInterface? UserInterface => Owner.GetUIOrNull(CommunicationsConsoleUiKey.Key); } }