This commit is contained in:
Brant Martin
2019-04-20 11:43:55 -04:00
parent 068b074de0
commit 56f7578d13
2 changed files with 44 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VRage.Collections;
using VRage.Network;
namespace Torch.API.Managers
@@ -41,5 +42,24 @@ namespace Torch.API.Managers
/// <param name="font">Font to use</param>
/// <param name="targetSteamId">Player to send the message to, or everyone by default</param>
void SendMessageAsOther(string author, string message, string font, ulong targetSteamId = 0);
/// <summary>
/// Mute user from global chat.
/// </summary>
/// <param name="steamId"></param>
/// <returns></returns>
bool MuteUser(ulong steamId);
/// <summary>
/// Unmute user from global chat.
/// </summary>
/// <param name="steamId"></param>
/// <returns></returns>
bool UnmuteUser(ulong steamId);
/// <summary>
/// Users which are not allowed to chat.
/// </summary>
HashSetReader<ulong> MutedUsers { get; }
}
}

View File

@@ -16,6 +16,7 @@ using Torch.API.Managers;
using Torch.Managers.PatchManager;
using Torch.Utils;
using VRage;
using VRage.Collections;
using VRage.Library.Collections;
using VRage.Network;
@@ -47,6 +48,10 @@ namespace Torch.Managers.ChatManager
private static readonly Logger _log = LogManager.GetCurrentClassLogger();
private static readonly Logger _chatLog = LogManager.GetLogger("Chat");
private readonly HashSet<ulong> _muted = new HashSet<ulong>();
/// <inheritdoc />
public HashSetReader<ulong> MutedUsers => _muted;
/// <inheritdoc />
public ChatManagerServer(ITorchBase torchInstance) : base(torchInstance)
{
@@ -56,6 +61,18 @@ namespace Torch.Managers.ChatManager
/// <inheritdoc />
public event MessageProcessingDel MessageProcessing;
/// <inheritdoc />
public bool MuteUser(ulong steamId)
{
return _muted.Add(steamId);
}
/// <inheritdoc />
public bool UnmuteUser(ulong steamId)
{
return _muted.Remove(steamId);
}
/// <inheritdoc />
public void SendMessageAsOther(ulong authorId, string message, ulong targetSteamId = 0)
{
@@ -128,6 +145,13 @@ namespace Torch.Managers.ChatManager
internal void RaiseMessageRecieved(ChatMsg message, ref bool consumed)
{
var torchMsg = new TorchChatMessage(GetMemberName(message.Author), message.Author, message.Text, (ChatChannel)message.Channel, message.TargetId);
if (_muted.Contains(message.Author))
{
consumed = true;
_chatLog.Warn($"MUTED USER: [{torchMsg.Channel}:{torchMsg.Target}] {torchMsg.Author}: {torchMsg.Message}");
return;
}
MessageProcessing?.Invoke(torchMsg, ref consumed);
if (!consumed)