diff --git a/Torch.API/Managers/IChatManagerClient.cs b/Torch.API/Managers/IChatManagerClient.cs
index 2be2fc8..f4ce06c 100644
--- a/Torch.API/Managers/IChatManagerClient.cs
+++ b/Torch.API/Managers/IChatManagerClient.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sandbox.Engine.Multiplayer;
+using Sandbox.Game.Gui;
using Sandbox.Game.Multiplayer;
using VRage.Game;
using VRage.Network;
@@ -28,6 +29,8 @@ namespace Torch.API.Managers
AuthorSteamId = null;
Author = author;
Message = message;
+ Channel = ChatChannel.Global;
+ Target = 0;
Font = font;
}
@@ -38,12 +41,14 @@ namespace Torch.API.Managers
/// Author's steam ID
/// Message
/// Font
- public TorchChatMessage(string author, ulong authorSteamId, string message, string font = MyFontEnum.Blue)
+ public TorchChatMessage(string author, ulong authorSteamId, string message, ChatChannel channel, long target, string font = MyFontEnum.Blue)
{
Timestamp = DateTime.Now;
AuthorSteamId = authorSteamId;
Author = author;
Message = message;
+ Channel = channel;
+ Target = target;
Font = font;
}
@@ -59,6 +64,8 @@ namespace Torch.API.Managers
AuthorSteamId = authorSteamId;
Author = MyMultiplayer.Static?.GetMemberName(authorSteamId) ?? "Player";
Message = message;
+ Channel = ChatChannel.Global;
+ Target = 0;
Font = font;
}
@@ -79,6 +86,14 @@ namespace Torch.API.Managers
///
public readonly string Message;
///
+ /// The chat channel the message is part of.
+ ///
+ public readonly ChatChannel Channel;
+ ///
+ /// The intended recipient of the message.
+ ///
+ public readonly long Target;
+ ///
/// The font, or null if default.
///
public readonly string Font;
diff --git a/Torch/Managers/ChatManager/ChatManagerClient.cs b/Torch/Managers/ChatManager/ChatManagerClient.cs
index 5dfe6d8..4b72e1c 100644
--- a/Torch/Managers/ChatManager/ChatManagerClient.cs
+++ b/Torch/Managers/ChatManager/ChatManagerClient.cs
@@ -108,7 +108,7 @@ namespace Torch.Managers.ChatManager
{
if (!sendToOthers)
return;
- var torchMsg = new TorchChatMessage(MySession.Static.LocalHumanPlayer?.DisplayName ?? "Player", Sync.MyId, messageText);
+ var torchMsg = new TorchChatMessage(MySession.Static.LocalHumanPlayer?.DisplayName ?? "Player", Sync.MyId, messageText, ChatChannel.Global, 0);
bool consumed = RaiseMessageRecieved(torchMsg);
if (!consumed)
consumed = OfflineMessageProcessor(torchMsg);
diff --git a/Torch/Managers/ChatManager/ChatManagerServer.cs b/Torch/Managers/ChatManager/ChatManagerServer.cs
index 61101a3..ee6270c 100644
--- a/Torch/Managers/ChatManager/ChatManagerServer.cs
+++ b/Torch/Managers/ChatManager/ChatManagerServer.cs
@@ -34,10 +34,11 @@ namespace Torch.Managers.ChatManager
context.GetPattern(target).Prefixes.Add(patchMethod);
}
- private static void PrefixMessageProcessing(ref ChatMsg msg)
+ private static bool PrefixMessageProcessing(ref ChatMsg msg)
{
var consumed = false;
ChatManager?.RaiseMessageRecieved(msg, ref consumed);
+ return !consumed;
}
}
@@ -160,7 +161,7 @@ namespace Torch.Managers.ChatManager
internal void RaiseMessageRecieved(ChatMsg message, ref bool consumed)
{
- var torchMsg = new TorchChatMessage(GetMemberName(message.Author), message.Author, message.Text);
+ var torchMsg = new TorchChatMessage(GetMemberName(message.Author), message.Author, message.Text, (ChatChannel)message.Channel, message.TargetId);
MessageProcessing?.Invoke(torchMsg, ref consumed);
if (!consumed)