From 87a199fc19d6bfa87bfe9a800b0c15cabcdaef0b Mon Sep 17 00:00:00 2001 From: Spirtix Date: Mon, 8 Apr 2024 21:40:38 +0200 Subject: [PATCH] ManagementCommands: list and disable all chats --- src/Core/Room.cs | 7 +++++++ src/Management/Commands/DisableAllChatsCommand.cs | 13 +++++++++++++ .../Commands/ListAllChatOverridesCommand.cs | 12 ++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/Management/Commands/DisableAllChatsCommand.cs create mode 100644 src/Management/Commands/ListAllChatOverridesCommand.cs diff --git a/src/Core/Room.cs b/src/Core/Room.cs index 0836729..15916f6 100644 --- a/src/Core/Room.cs +++ b/src/Core/Room.cs @@ -92,6 +92,13 @@ public class Room { return rooms.Values.ToArray(); } + public static void DisableAllChatOverrides() { + lock (RoomsListLock) { + foreach (var room in rooms) { + room.Value.AllowChatOverride = false; + } + } + } public NetworkPacket RespondJoinRoom() { NetworkObject obj = new(); diff --git a/src/Management/Commands/DisableAllChatsCommand.cs b/src/Management/Commands/DisableAllChatsCommand.cs new file mode 100644 index 0000000..d457b4c --- /dev/null +++ b/src/Management/Commands/DisableAllChatsCommand.cs @@ -0,0 +1,13 @@ +using sodoffmmo.Attributes; +using sodoffmmo.Core; + +namespace sodoffmmo.Management.Commands; + +[ManagementCommand("disableallchats", Role.Moderator)] +class DisableAllChatsCommand : IManagementCommand { + public void Handle(Client client, string[] arguments) { + Room.DisableAllChatOverrides(); + client.Room.Send(Utils.BuildServerSideMessage("All chat overrides have been disabled", "Server")); + } +} + diff --git a/src/Management/Commands/ListAllChatOverridesCommand.cs b/src/Management/Commands/ListAllChatOverridesCommand.cs new file mode 100644 index 0000000..3032a23 --- /dev/null +++ b/src/Management/Commands/ListAllChatOverridesCommand.cs @@ -0,0 +1,12 @@ +using sodoffmmo.Attributes; +using sodoffmmo.Core; + +namespace sodoffmmo.Management.Commands; + +[ManagementCommand("listallchats", Role.Moderator)] +class ListAllChatOverridesCommand : IManagementCommand { + public void Handle(Client client, string[] arguments) { + client.Send(Utils.BuildServerSideMessage(string.Join(' ', Room.AllRooms().Where(x => x.AllowChatOverride).Select(x => x.Name)), "Server")); + } +} +