From 72ceeffdad78890912708c0193fd8ac80c3f9b51 Mon Sep 17 00:00:00 2001 From: John Gross Date: Tue, 5 Mar 2019 11:31:00 -0800 Subject: [PATCH] Update events/UI to reflect new chat --- Torch.API/Managers/IChatManagerClient.cs | 6 +++--- Torch.Server/Views/ChatControl.xaml.cs | 11 +++++++++++ Torch/Managers/ChatManager/ChatManagerClient.cs | 2 +- Torch/Managers/ChatManager/ChatManagerServer.cs | 4 ++-- 4 files changed, 17 insertions(+), 6 deletions(-) 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)