From ace2533f05d20bd019f3ce2b8b507798b3ea4c6d Mon Sep 17 00:00:00 2001 From: Cara Date: Thu, 8 Apr 2021 17:28:28 +0930 Subject: [PATCH] Add OnChatMessageHandled and `OnChatMessageUnhandled` events --- Dalamud/Game/Internal/Gui/ChatGui.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Dalamud/Game/Internal/Gui/ChatGui.cs b/Dalamud/Game/Internal/Gui/ChatGui.cs index 6a67162b1..5c903a5c5 100644 --- a/Dalamud/Game/Internal/Gui/ChatGui.cs +++ b/Dalamud/Game/Internal/Gui/ChatGui.cs @@ -19,6 +19,8 @@ namespace Dalamud.Game.Internal.Gui { public delegate void OnMessageDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled); public delegate void OnMessageRawDelegate(XivChatType type, uint senderId, ref StdString sender, ref StdString message, ref bool isHandled); public delegate void OnCheckMessageHandledDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled); + public delegate void OnMessageHandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); + public delegate void OnMessageUnhandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); /// /// Event that allows you to stop messages from appearing in chat by setting the isHandled parameter to true. @@ -30,6 +32,16 @@ namespace Dalamud.Game.Internal.Gui { /// public event OnMessageDelegate OnChatMessage; + /// + /// Event that will be fired when a chat message is handled by Dalamud or a Plugin. + /// + public event OnMessageHandledDelegate OnChatMessageHandled; + + /// + /// Event that will be fired when a chat message is not handled by Dalamud or a Plugin. + /// + public event OnMessageUnhandledDelegate OnChatMessageUnhandled; + /// /// Event that will be fired when a chat message is sent by the game, containing raw, unparsed data. /// @@ -167,8 +179,15 @@ namespace Dalamud.Game.Internal.Gui { } // Print the original chat if it's handled. - if (!isHandled) + if (isHandled) + { + OnChatMessageHandled?.Invoke(chattype, senderid, parsedSender, parsedMessage); + } + else + { retVal = this.printMessageHook.Original(manager, chattype, pSenderName, messagePtr, senderid, parameter); + OnChatMessageUnhandled?.Invoke(chattype, senderid, parsedSender, parsedMessage); + } if (this.baseAddress == IntPtr.Zero) this.baseAddress = manager;