diff --git a/Dalamud/Game/ChatHandlers.cs b/Dalamud/Game/ChatHandlers.cs index fa966f30a..38cce4b13 100644 --- a/Dalamud/Game/ChatHandlers.cs +++ b/Dalamud/Game/ChatHandlers.cs @@ -139,7 +139,7 @@ internal class ChatHandlers : IServiceType /// 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; @@ -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.GetNullable(); if (clientState == null) diff --git a/Dalamud/Game/Command/CommandManager.cs b/Dalamud/Game/Command/CommandManager.cs index 6a419a34a..571c5b385 100644 --- a/Dalamud/Game/Command/CommandManager.cs +++ b/Dalamud/Game/Command/CommandManager.cs @@ -135,9 +135,9 @@ internal sealed class CommandManager : IInternalDisposableService, ICommandManag 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"]; if (cmdMatch.Success) diff --git a/Dalamud/Game/Gui/ChatGui.cs b/Dalamud/Game/Gui/ChatGui.cs index 3c6ed2fc1..abb8bb5c2 100644 --- a/Dalamud/Game/Gui/ChatGui.cs +++ b/Dalamud/Game/Gui/ChatGui.cs @@ -12,7 +12,6 @@ using Dalamud.IoC; using Dalamud.IoC.Internal; using Dalamud.Logging.Internal; using Dalamud.Memory; -using Dalamud.Plugin.Internal; using Dalamud.Plugin.Services; using Dalamud.Utility; using FFXIVClientStructs.FFXIV.Client.System.String; @@ -20,11 +19,6 @@ using FFXIVClientStructs.FFXIV.Client.UI.Misc; 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. - /// /// This class handles interacting with the native chat UI. /// @@ -179,7 +173,7 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui var sender = Utf8String.FromSequence(chat.Name.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); message->Dtor(true); @@ -321,7 +315,7 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui try { 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) { @@ -337,7 +331,7 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui try { 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) { @@ -364,12 +358,12 @@ internal sealed unsafe class ChatGui : IInternalDisposableService, IChatGui // Print the original chat if it's handled. if (isHandled) { - this.ChatMessageHandled?.Invoke(chatType, (uint)timestamp, parsedSender, parsedMessage); + this.ChatMessageHandled?.Invoke(chatType, timestamp, parsedSender, parsedMessage); } else { 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) @@ -501,15 +495,15 @@ internal class ChatGuiPluginScoped : IInternalDisposableService, IChatGui public void PrintError(SeString message, string? messageTag = null, ushort? tagColor = null) => this.chatGuiService.PrintError(message, messageTag, tagColor); - private void OnMessageForward(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) - => this.ChatMessage?.Invoke(type, senderId, ref sender, ref message, ref isHandled); + private void OnMessageForward(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool 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) - => this.CheckMessageHandled?.Invoke(type, senderId, ref sender, ref message, ref isHandled); + private void OnCheckMessageForward(XivChatType type, int timestamp, ref SeString sender, ref SeString message, ref bool isHandled) + => this.CheckMessageHandled?.Invoke(type, timestamp, ref sender, ref message, ref isHandled); - private void OnMessageHandledForward(XivChatType type, uint senderId, SeString sender, SeString message) - => this.ChatMessageHandled?.Invoke(type, senderId, sender, message); + private void OnMessageHandledForward(XivChatType type, int timestamp, SeString sender, SeString message) + => this.ChatMessageHandled?.Invoke(type, timestamp, sender, message); - private void OnMessageUnhandledForward(XivChatType type, uint senderId, SeString sender, SeString message) - => this.ChatMessageUnhandled?.Invoke(type, senderId, sender, message); + private void OnMessageUnhandledForward(XivChatType type, int timestamp, SeString sender, SeString message) + => this.ChatMessageUnhandled?.Invoke(type, timestamp, sender, message); } diff --git a/Dalamud/Game/Text/XivChatEntry.cs b/Dalamud/Game/Text/XivChatEntry.cs index afc89b906..25f752054 100644 --- a/Dalamud/Game/Text/XivChatEntry.cs +++ b/Dalamud/Game/Text/XivChatEntry.cs @@ -1,5 +1,3 @@ -using System; - using Dalamud.Game.Text.SeStringHandling; namespace Dalamud.Game.Text; @@ -15,9 +13,9 @@ public sealed class XivChatEntry public XivChatType Type { get; set; } = XivChatType.Debug; /// - /// Gets or sets the sender ID. + /// Gets or sets the message timestamp. /// - public uint SenderId { get; set; } + public int Timestamp { get; set; } /// /// Gets or sets the sender name. @@ -30,7 +28,7 @@ public sealed class XivChatEntry public SeString Message { get; set; } = string.Empty; /// - /// Gets or sets the message parameters. + /// Gets or sets a value indicating whether new message sounds should be silenced or not. /// - public IntPtr Parameters { get; set; } + public bool Silent { get; set; } } diff --git a/Dalamud/Game/Text/XivChatType.cs b/Dalamud/Game/Text/XivChatType.cs index be9fb8e91..1a41a5eff 100644 --- a/Dalamud/Game/Text/XivChatType.cs +++ b/Dalamud/Game/Text/XivChatType.cs @@ -1,9 +1,9 @@ namespace Dalamud.Game.Text; /// -/// The FFXIV chat types as seen in the LogKind ex table. +/// The FFXIV chat types as seen in the LogKind excel sheet. /// -public enum XivChatType : ushort // FIXME: this is a single byte +public enum XivChatType : ushort { /// /// No chat type. diff --git a/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ChatAgingStep.cs b/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ChatAgingStep.cs index c7b6213d4..42357ccec 100644 --- a/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ChatAgingStep.cs +++ b/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ChatAgingStep.cs @@ -62,7 +62,7 @@ internal class ChatAgingStep : IAgingStep } 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") { diff --git a/Dalamud/Plugin/Services/IChatGui.cs b/Dalamud/Plugin/Services/IChatGui.cs index 24fd4e830..09f485ac2 100644 --- a/Dalamud/Plugin/Services/IChatGui.cs +++ b/Dalamud/Plugin/Services/IChatGui.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Dalamud.Game.Gui; using Dalamud.Game.Text; @@ -15,39 +15,39 @@ public interface IChatGui /// A delegate type used with the event. /// /// The type of chat. - /// The sender ID. + /// The timestamp of when the message was sent. /// The sender name. /// The message sent. /// A value indicating whether the message was handled or should be propagated. - 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); /// /// A delegate type used with the event. /// /// The type of chat. - /// The sender ID. + /// The timestamp of when the message was sent. /// The sender name. /// The message sent. /// A value indicating whether the message was handled or should be propagated. - 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); /// /// A delegate type used with the event. /// /// The type of chat. - /// The sender ID. + /// The timestamp of when the message was sent. /// The sender name. /// The message sent. - public delegate void OnMessageHandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); + public delegate void OnMessageHandledDelegate(XivChatType type, int timestamp, SeString sender, SeString message); /// /// A delegate type used with the event. /// /// The type of chat. - /// The sender ID. + /// The timestamp of when the message was sent. /// The sender name. /// The message sent. - public delegate void OnMessageUnhandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); + public delegate void OnMessageUnhandledDelegate(XivChatType type, int timestamp, SeString sender, SeString message); /// /// Event that will be fired when a chat message is sent to chat by the game.