| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using Content.Server.Administration.Managers;
- using Content.Server.Chat;
- using Content.Server.Chat.Managers;
- using Content.Server.Chat.Systems;
- using Content.Server.EUI;
- using Content.Shared.Administration;
- using Content.Shared.Eui;
- namespace Content.Server.Administration.UI
- {
- public sealed class AdminAnnounceEui : BaseEui
- {
- [Dependency] private readonly IAdminManager _adminManager = default!;
- [Dependency] private readonly IChatManager _chatManager = default!;
- private readonly ChatSystem _chatSystem;
- public AdminAnnounceEui()
- {
- IoCManager.InjectDependencies(this);
- _chatSystem = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<ChatSystem>();
- }
- public override void Opened()
- {
- StateDirty();
- }
- public override EuiStateBase GetNewState()
- {
- return new AdminAnnounceEuiState();
- }
- public override void HandleMessage(EuiMessageBase msg)
- {
- base.HandleMessage(msg);
- switch (msg)
- {
- case AdminAnnounceEuiMsg.DoAnnounce doAnnounce:
- if (!_adminManager.HasAdminFlag(Player, AdminFlags.Admin))
- {
- Close();
- break;
- }
- switch (doAnnounce.AnnounceType)
- {
- case AdminAnnounceType.Server:
- _chatManager.DispatchServerAnnouncement(doAnnounce.Announcement);
- break;
- // TODO: Per-station announcement support
- case AdminAnnounceType.Station:
- _chatSystem.DispatchGlobalAnnouncement(doAnnounce.Announcement, doAnnounce.Announcer, colorOverride: Color.Gold);
- break;
- }
- StateDirty();
- if (doAnnounce.CloseAfter)
- Close();
- break;
- }
- }
- }
- }
|