Add OnChatMessageHandled and OnChatMessageUnhandled events

This commit is contained in:
Cara 2021-04-08 17:28:28 +09:30
parent 3f41c20a12
commit ace2533f05

View file

@ -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);
/// <summary>
/// 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 {
/// </summary>
public event OnMessageDelegate OnChatMessage;
/// <summary>
/// Event that will be fired when a chat message is handled by Dalamud or a Plugin.
/// </summary>
public event OnMessageHandledDelegate OnChatMessageHandled;
/// <summary>
/// Event that will be fired when a chat message is not handled by Dalamud or a Plugin.
/// </summary>
public event OnMessageUnhandledDelegate OnChatMessageUnhandled;
/// <summary>
/// Event that will be fired when a chat message is sent by the game, containing raw, unparsed data.
/// </summary>
@ -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;