Merge pull request #296 from Caraxi/extra-chat-events

Add OnChatMessageHandled and OnChatMessageUnhandled events
This commit is contained in:
goaaats 2021-04-08 17:19:26 +02:00 committed by GitHub
commit 107924c7e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

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;