diff --git a/Dalamud/Game/Chat/LogMessage.cs b/Dalamud/Game/Chat/LogMessage.cs index 37b341428..5d59a84ee 100644 --- a/Dalamud/Game/Chat/LogMessage.cs +++ b/Dalamud/Game/Chat/LogMessage.cs @@ -1,8 +1,8 @@ using Dalamud.Data; -using Dalamud.Game.Text.Evaluator; using Dalamud.Game.Text.SeStringHandling; +using Dalamud.Utility; - +using FFXIVClientStructs.FFXIV.Client.System.String; using FFXIVClientStructs.FFXIV.Client.UI.Agent; using FFXIVClientStructs.FFXIV.Client.UI.Misc; using FFXIVClientStructs.FFXIV.Component.Text; @@ -12,7 +12,6 @@ using Lumina.Excel; using Lumina.Text.ReadOnly; using System.Diagnostics.CodeAnalysis; -using System.Linq; namespace Dalamud.Game.Chat; @@ -150,9 +149,14 @@ internal unsafe readonly struct LogMessage(LogMessageQueueItem* ptr) : ILogMessa // the formatting logic is taken from RaptureLogModule_Update + using var utf8 = new Utf8String(); SetName(logModule, this.SourceEntity); SetName(logModule, this.TargetEntity); - return Service.Get().EvaluateFromLogMessage(this.LogMessageId, ptr->Parameters.Select(p => (SeStringParameter)p).ToArray()); + + using var rssb = new RentedSeStringBuilder(); + logModule->RaptureTextModule->FormatString(rssb.Builder.Append(this.GameData.Value.Text).GetViewAsSpan(), &ptr->Parameters, &utf8); + + return new ReadOnlySeString(utf8.AsSpan()); void SetName(RaptureLogModule* self, LogMessageEntity item) { diff --git a/Dalamud/Game/Text/Evaluator/SeStringParameter.cs b/Dalamud/Game/Text/Evaluator/SeStringParameter.cs index a8fe3b3b9..036d1c921 100644 --- a/Dalamud/Game/Text/Evaluator/SeStringParameter.cs +++ b/Dalamud/Game/Text/Evaluator/SeStringParameter.cs @@ -1,7 +1,5 @@ using System.Globalization; -using FFXIVClientStructs.FFXIV.Component.Text; - using Lumina.Text.ReadOnly; using DSeString = Dalamud.Game.Text.SeStringHandling.SeString; @@ -77,12 +75,4 @@ public readonly struct SeStringParameter public static implicit operator SeStringParameter(string value) => new(value); public static implicit operator SeStringParameter(ReadOnlySpan value) => new(value); - - public static unsafe implicit operator SeStringParameter(TextParameter value) => value.Type switch - { - TextParameterType.Uninitialized => default, - TextParameterType.Integer => new((uint)value.IntValue), - TextParameterType.ReferencedUtf8String => new(new ReadOnlySeString(value.ReferencedUtf8StringValue->Utf8String.AsSpan())), - TextParameterType.String => new(value.StringValue), - }; }