Update XivChatEntry types and names (#1784)

This commit is contained in:
Haselnussbomber 2024-04-28 20:38:40 +02:00 committed by GitHub
parent 51c2f77812
commit b98337be4e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 33 additions and 41 deletions

View file

@ -139,7 +139,7 @@ internal class ChatHandlers : IServiceType
/// </summary> /// </summary>
public bool IsAutoUpdateComplete { get; private set; } public bool IsAutoUpdateComplete { get; private set; }
private void OnCheckMessageHandled(XivChatType type, uint senderid, ref SeString sender, ref SeString message, ref bool isHandled) private void OnCheckMessageHandled(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled)
{ {
var textVal = message.TextValue; var textVal = message.TextValue;
@ -165,7 +165,7 @@ internal class ChatHandlers : IServiceType
} }
} }
private void OnChatMessage(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) private void OnChatMessage(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled)
{ {
var clientState = Service<ClientState.ClientState>.GetNullable(); var clientState = Service<ClientState.ClientState>.GetNullable();
if (clientState == null) if (clientState == null)

View file

@ -135,9 +135,9 @@ internal sealed class CommandManager : IInternalDisposableService, ICommandManag
this.chatGui.CheckMessageHandled -= this.OnCheckMessageHandled; this.chatGui.CheckMessageHandled -= this.OnCheckMessageHandled;
} }
private void OnCheckMessageHandled(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) private void OnCheckMessageHandled(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled)
{ {
if (type == XivChatType.ErrorMessage && senderId == 0) if (type == XivChatType.ErrorMessage && timestamp == 0)
{ {
var cmdMatch = this.currentLangCommandRegex.Match(message.TextValue).Groups["command"]; var cmdMatch = this.currentLangCommandRegex.Match(message.TextValue).Groups["command"];
if (cmdMatch.Success) if (cmdMatch.Success)

View file

@ -12,7 +12,6 @@ using Dalamud.IoC;
using Dalamud.IoC.Internal; using Dalamud.IoC.Internal;
using Dalamud.Logging.Internal; using Dalamud.Logging.Internal;
using Dalamud.Memory; using Dalamud.Memory;
using Dalamud.Plugin.Internal;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using Dalamud.Utility; using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Client.System.String; using FFXIVClientStructs.FFXIV.Client.System.String;
@ -20,11 +19,6 @@ using FFXIVClientStructs.FFXIV.Client.UI.Misc;
namespace Dalamud.Game.Gui; namespace Dalamud.Game.Gui;
// TODO(api10): Update IChatGui, ChatGui and XivChatEntry to use correct types and names:
// "uint SenderId" should be "int Timestamp".
// "IntPtr Parameters" should be something like "bool Silent". It suppresses new message sounds in certain channels.
// This has to be a 1 byte boolean, so only change it to bool if marshalling is disabled.
/// <summary> /// <summary>
/// This class handles interacting with the native chat UI. /// This class handles interacting with the native chat UI.
/// </summary> /// </summary>
@ -179,7 +173,7 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui
var sender = Utf8String.FromSequence(chat.Name.Encode()); var sender = Utf8String.FromSequence(chat.Name.Encode());
var message = Utf8String.FromSequence(replacedMessage.BuiltString.Encode()); var message = Utf8String.FromSequence(replacedMessage.BuiltString.Encode());
this.HandlePrintMessageDetour(RaptureLogModule.Instance(), chat.Type, sender, message, (int)chat.SenderId, (byte)(chat.Parameters != 0 ? 1 : 0)); this.HandlePrintMessageDetour(RaptureLogModule.Instance(), chat.Type, sender, message, chat.Timestamp, (byte)(chat.Silent ? 1 : 0));
sender->Dtor(true); sender->Dtor(true);
message->Dtor(true); message->Dtor(true);
@ -321,7 +315,7 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui
try try
{ {
var messageHandledDelegate = @delegate as IChatGui.OnCheckMessageHandledDelegate; var messageHandledDelegate = @delegate as IChatGui.OnCheckMessageHandledDelegate;
messageHandledDelegate!.Invoke(chatType, (uint)timestamp, ref parsedSender, ref parsedMessage, ref isHandled); messageHandledDelegate!.Invoke(chatType, timestamp, ref parsedSender, ref parsedMessage, ref isHandled);
} }
catch (Exception e) catch (Exception e)
{ {
@ -337,7 +331,7 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui
try try
{ {
var messageHandledDelegate = @delegate as IChatGui.OnMessageDelegate; var messageHandledDelegate = @delegate as IChatGui.OnMessageDelegate;
messageHandledDelegate!.Invoke(chatType, (uint)timestamp, ref parsedSender, ref parsedMessage, ref isHandled); messageHandledDelegate!.Invoke(chatType, timestamp, ref parsedSender, ref parsedMessage, ref isHandled);
} }
catch (Exception e) catch (Exception e)
{ {
@ -364,12 +358,12 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui
// Print the original chat if it's handled. // Print the original chat if it's handled.
if (isHandled) if (isHandled)
{ {
this.ChatMessageHandled?.Invoke(chatType, (uint)timestamp, parsedSender, parsedMessage); this.ChatMessageHandled?.Invoke(chatType, timestamp, parsedSender, parsedMessage);
} }
else else
{ {
messageId = this.printMessageHook.Original(manager, chatType, sender, message, timestamp, silent); messageId = this.printMessageHook.Original(manager, chatType, sender, message, timestamp, silent);
this.ChatMessageUnhandled?.Invoke(chatType, (uint)timestamp, parsedSender, parsedMessage); this.ChatMessageUnhandled?.Invoke(chatType, timestamp, parsedSender, parsedMessage);
} }
} }
catch (Exception ex) catch (Exception ex)
@ -501,15 +495,15 @@ internal class ChatGuiPluginScoped : IInternalDisposableService, IChatGui
public void PrintError(SeString message, string? messageTag = null, ushort? tagColor = null) public void PrintError(SeString message, string? messageTag = null, ushort? tagColor = null)
=> this.chatGuiService.PrintError(message, messageTag, tagColor); => this.chatGuiService.PrintError(message, messageTag, tagColor);
private void OnMessageForward(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) private void OnMessageForward(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled)
=> this.ChatMessage?.Invoke(type, senderId, ref sender, ref message, ref isHandled); => this.ChatMessage?.Invoke(type, timestamp, ref sender, ref message, ref isHandled);
private void OnCheckMessageForward(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) private void OnCheckMessageForward(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled)
=> this.CheckMessageHandled?.Invoke(type, senderId, ref sender, ref message, ref isHandled); => this.CheckMessageHandled?.Invoke(type, timestamp, ref sender, ref message, ref isHandled);
private void OnMessageHandledForward(XivChatType type, uint senderId, SeString sender, SeString message) private void OnMessageHandledForward(XivChatType type, int timestamp, SeString sender, SeString message)
=> this.ChatMessageHandled?.Invoke(type, senderId, sender, message); => this.ChatMessageHandled?.Invoke(type, timestamp, sender, message);
private void OnMessageUnhandledForward(XivChatType type, uint senderId, SeString sender, SeString message) private void OnMessageUnhandledForward(XivChatType type, int timestamp, SeString sender, SeString message)
=> this.ChatMessageUnhandled?.Invoke(type, senderId, sender, message); => this.ChatMessageUnhandled?.Invoke(type, timestamp, sender, message);
} }

View file

@ -1,5 +1,3 @@
using System;
using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling;
namespace Dalamud.Game.Text; namespace Dalamud.Game.Text;
@ -15,9 +13,9 @@ public sealed class XivChatEntry
public XivChatType Type { get; set; } = XivChatType.Debug; public XivChatType Type { get; set; } = XivChatType.Debug;
/// <summary> /// <summary>
/// Gets or sets the sender ID. /// Gets or sets the message timestamp.
/// </summary> /// </summary>
public uint SenderId { get; set; } public int Timestamp { get; set; }
/// <summary> /// <summary>
/// Gets or sets the sender name. /// Gets or sets the sender name.
@ -30,7 +28,7 @@ public sealed class XivChatEntry
public SeString Message { get; set; } = string.Empty; public SeString Message { get; set; } = string.Empty;
/// <summary> /// <summary>
/// Gets or sets the message parameters. /// Gets or sets a value indicating whether new message sounds should be silenced or not.
/// </summary> /// </summary>
public IntPtr Parameters { get; set; } public bool Silent { get; set; }
} }

View file

@ -1,9 +1,9 @@
namespace Dalamud.Game.Text; namespace Dalamud.Game.Text;
/// <summary> /// <summary>
/// The FFXIV chat types as seen in the LogKind ex table. /// The FFXIV chat types as seen in the LogKind excel sheet.
/// </summary> /// </summary>
public enum XivChatType : ushort // FIXME: this is a single byte public enum XivChatType : ushort
{ {
/// <summary> /// <summary>
/// No chat type. /// No chat type.

View file

@ -62,7 +62,7 @@ internal class ChatAgingStep : IAgingStep
} }
private void ChatOnOnChatMessage( private void ChatOnOnChatMessage(
XivChatType type, uint senderid, ref SeString sender, ref SeString message, ref bool ishandled) XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool ishandled)
{ {
if (type == XivChatType.Echo && message.TextValue == "DALAMUD") if (type == XivChatType.Echo && message.TextValue == "DALAMUD")
{ {

View file

@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using Dalamud.Game.Gui; using Dalamud.Game.Gui;
using Dalamud.Game.Text; using Dalamud.Game.Text;
@ -15,39 +15,39 @@ public interface IChatGui
/// A delegate type used with the <see cref="ChatGui.ChatMessage"/> event. /// A delegate type used with the <see cref="ChatGui.ChatMessage"/> event.
/// </summary> /// </summary>
/// <param name="type">The type of chat.</param> /// <param name="type">The type of chat.</param>
/// <param name="senderId">The sender ID.</param> /// <param name="timestamp">The timestamp of when the message was sent.</param>
/// <param name="sender">The sender name.</param> /// <param name="sender">The sender name.</param>
/// <param name="message">The message sent.</param> /// <param name="message">The message sent.</param>
/// <param name="isHandled">A value indicating whether the message was handled or should be propagated.</param> /// <param name="isHandled">A value indicating whether the message was handled or should be propagated.</param>
public delegate void OnMessageDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled); public delegate void OnMessageDelegate(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled);
/// <summary> /// <summary>
/// A delegate type used with the <see cref="ChatGui.CheckMessageHandled"/> event. /// A delegate type used with the <see cref="ChatGui.CheckMessageHandled"/> event.
/// </summary> /// </summary>
/// <param name="type">The type of chat.</param> /// <param name="type">The type of chat.</param>
/// <param name="senderId">The sender ID.</param> /// <param name="timestamp">The timestamp of when the message was sent.</param>
/// <param name="sender">The sender name.</param> /// <param name="sender">The sender name.</param>
/// <param name="message">The message sent.</param> /// <param name="message">The message sent.</param>
/// <param name="isHandled">A value indicating whether the message was handled or should be propagated.</param> /// <param name="isHandled">A value indicating whether the message was handled or should be propagated.</param>
public delegate void OnCheckMessageHandledDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled); public delegate void OnCheckMessageHandledDelegate(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled);
/// <summary> /// <summary>
/// A delegate type used with the <see cref="ChatGui.ChatMessageHandled"/> event. /// A delegate type used with the <see cref="ChatGui.ChatMessageHandled"/> event.
/// </summary> /// </summary>
/// <param name="type">The type of chat.</param> /// <param name="type">The type of chat.</param>
/// <param name="senderId">The sender ID.</param> /// <param name="timestamp">The timestamp of when the message was sent.</param>
/// <param name="sender">The sender name.</param> /// <param name="sender">The sender name.</param>
/// <param name="message">The message sent.</param> /// <param name="message">The message sent.</param>
public delegate void OnMessageHandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); public delegate void OnMessageHandledDelegate(XivChatType type, int timestamp, SeString sender, SeString message);
/// <summary> /// <summary>
/// A delegate type used with the <see cref="ChatGui.ChatMessageUnhandled"/> event. /// A delegate type used with the <see cref="ChatGui.ChatMessageUnhandled"/> event.
/// </summary> /// </summary>
/// <param name="type">The type of chat.</param> /// <param name="type">The type of chat.</param>
/// <param name="senderId">The sender ID.</param> /// <param name="timestamp">The timestamp of when the message was sent.</param>
/// <param name="sender">The sender name.</param> /// <param name="sender">The sender name.</param>
/// <param name="message">The message sent.</param> /// <param name="message">The message sent.</param>
public delegate void OnMessageUnhandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); public delegate void OnMessageUnhandledDelegate(XivChatType type, int timestamp, SeString sender, SeString message);
/// <summary> /// <summary>
/// Event that will be fired when a chat message is sent to chat by the game. /// Event that will be fired when a chat message is sent to chat by the game.