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")); + } +} +