diff --git a/Torch.API/Managers/IChatManagerClient.cs b/Torch.API/Managers/IChatManagerClient.cs
index f4ce06c..5d6adf7 100644
--- a/Torch.API/Managers/IChatManagerClient.cs
+++ b/Torch.API/Managers/IChatManagerClient.cs
@@ -58,14 +58,14 @@ namespace Torch.API.Managers
/// Author's steam ID
/// Message
/// Font
- public TorchChatMessage(ulong authorSteamId, string message, string font = MyFontEnum.Blue)
+ public TorchChatMessage(ulong authorSteamId, string message, ChatChannel channel, long target, string font = MyFontEnum.Blue)
{
Timestamp = DateTime.Now;
AuthorSteamId = authorSteamId;
Author = MyMultiplayer.Static?.GetMemberName(authorSteamId) ?? "Player";
Message = message;
- Channel = ChatChannel.Global;
- Target = 0;
+ Channel = channel;
+ Target = target;
Font = font;
}
diff --git a/Torch.Server/Views/ChatControl.xaml.cs b/Torch.Server/Views/ChatControl.xaml.cs
index 242a8d1..65174f1 100644
--- a/Torch.Server/Views/ChatControl.xaml.cs
+++ b/Torch.Server/Views/ChatControl.xaml.cs
@@ -20,6 +20,8 @@ using NLog;
using Torch;
using Sandbox;
using Sandbox.Engine.Multiplayer;
+using Sandbox.Game.Gui;
+using Sandbox.Game.Multiplayer;
using Sandbox.Game.World;
using Torch.API;
using Torch.API.Managers;
@@ -131,6 +133,15 @@ namespace Torch.Server
bool atBottom = ChatScroller.VerticalOffset + 8 > ChatScroller.ScrollableHeight;
var span = new Span();
span.Inlines.Add($"{msg.Timestamp} ");
+ switch (msg.Channel)
+ {
+ case ChatChannel.Faction:
+ span.Inlines.Add(new Run($"[{MySession.Static.Factions.TryGetFactionById(msg.Target)?.Tag ?? "???"}] ") { Foreground = Brushes.Green });
+ break;
+ case ChatChannel.Private:
+ span.Inlines.Add(new Run($"[to {MySession.Static.Players.TryGetIdentity(msg.Target)?.DisplayName ?? "???"}] ") { Foreground = Brushes.DeepPink });
+ break;
+ }
span.Inlines.Add(new Run(msg.Author) { Foreground = LookupBrush(msg.Font) });
span.Inlines.Add($": {msg.Message}");
span.Inlines.Add(new LineBreak());
diff --git a/Torch/Managers/ChatManager/ChatManagerClient.cs b/Torch/Managers/ChatManager/ChatManagerClient.cs
index 4b72e1c..9c55455 100644
--- a/Torch/Managers/ChatManager/ChatManagerClient.cs
+++ b/Torch/Managers/ChatManager/ChatManagerClient.cs
@@ -127,7 +127,7 @@ namespace Torch.Managers.ChatManager
private void Multiplayer_ChatMessageReceived(ulong steamUserId, string messageText, ChatChannel channel, long targetId, string customAuthorName)
{
- var torchMsg = new TorchChatMessage(steamUserId, messageText,
+ var torchMsg = new TorchChatMessage(steamUserId, messageText, channel, targetId,
(steamUserId == MyGameService.UserId) ? MyFontEnum.DarkBlue : MyFontEnum.Blue);
if (!RaiseMessageRecieved(torchMsg) && HasHud)
_hudChatMessageReceived.Invoke(MyHud.Chat, steamUserId, messageText, channel, targetId, customAuthorName);
diff --git a/Torch/Managers/ChatManager/ChatManagerServer.cs b/Torch/Managers/ChatManager/ChatManagerServer.cs
index a045095..5a351f1 100644
--- a/Torch/Managers/ChatManager/ChatManagerServer.cs
+++ b/Torch/Managers/ChatManager/ChatManagerServer.cs
@@ -61,7 +61,7 @@ namespace Torch.Managers.ChatManager
{
if (targetSteamId == Sync.MyId)
{
- RaiseMessageRecieved(new TorchChatMessage(authorId, message));
+ RaiseMessageRecieved(new TorchChatMessage(authorId, message, ChatChannel.Global, 0));
return;
}
if (MyMultiplayer.Static == null)
@@ -131,7 +131,7 @@ namespace Torch.Managers.ChatManager
MessageProcessing?.Invoke(torchMsg, ref consumed);
if (!consumed)
- _chatLog.Info($"{torchMsg.Author}: {torchMsg.Message}");
+ _chatLog.Info($"[{torchMsg.Channel}:{torchMsg.Target}] {torchMsg.Author}: {torchMsg.Message}");
}
public static string GetMemberName(ulong steamId)