From 186b1b83765cd17d58fd70dc6c53a26af70b85ff Mon Sep 17 00:00:00 2001 From: RedworkDE <10944644+RedworkDE@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:58:47 +0100 Subject: [PATCH] Use SeStringEvaluator instead of RaptureTextModule for the debug display --- Dalamud/Game/Chat/LogMessage.cs | 13 +++++-------- Dalamud/Game/Text/Evaluator/SeStringParameter.cs | 10 ++++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Dalamud/Game/Chat/LogMessage.cs b/Dalamud/Game/Chat/LogMessage.cs index 931b3fb3a..37b341428 100644 --- a/Dalamud/Game/Chat/LogMessage.cs +++ b/Dalamud/Game/Chat/LogMessage.cs @@ -1,18 +1,18 @@ 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; using FFXIVClientStructs.Interop; using Lumina.Excel; +using Lumina.Text.ReadOnly; using System.Diagnostics.CodeAnalysis; - -using Lumina.Text.ReadOnly; +using System.Linq; namespace Dalamud.Game.Chat; @@ -150,12 +150,9 @@ 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); - logModule->RaptureTextModule->FormatString(this.GameData.Value.Text.ToDalamudString().EncodeWithNullTerminator(), &ptr->Parameters, &utf8); - - return new ReadOnlySeString(utf8.AsSpan()); + return Service.Get().EvaluateFromLogMessage(this.LogMessageId, ptr->Parameters.Select(p => (SeStringParameter)p).ToArray()); void SetName(RaptureLogModule* self, LogMessageEntity item) { diff --git a/Dalamud/Game/Text/Evaluator/SeStringParameter.cs b/Dalamud/Game/Text/Evaluator/SeStringParameter.cs index 036d1c921..a8fe3b3b9 100644 --- a/Dalamud/Game/Text/Evaluator/SeStringParameter.cs +++ b/Dalamud/Game/Text/Evaluator/SeStringParameter.cs @@ -1,5 +1,7 @@ using System.Globalization; +using FFXIVClientStructs.FFXIV.Component.Text; + using Lumina.Text.ReadOnly; using DSeString = Dalamud.Game.Text.SeStringHandling.SeString; @@ -75,4 +77,12 @@ 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), + }; }