From 3980929f719e113d4d4e6d7024695bc98d0b9e12 Mon Sep 17 00:00:00 2001 From: goat Date: Wed, 12 Feb 2020 03:23:50 +0900 Subject: [PATCH] feat: expose RawData of text payload --- .../SeStringHandling/Payloads/ItemPayload.cs | 2 -- .../SeStringHandling/Payloads/TextPayload.cs | 19 ++++++++++++++++++- Dalamud/Game/Internal/Gui/ChatGui.cs | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs b/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs index 78e82291a..d8bad2c0b 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs @@ -50,8 +50,6 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads // unk bytes.AddRange(new byte[] { 0x02, 0x01, END_BYTE }); - - return bytes.ToArray(); } diff --git a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs index 62ab70a40..161cd82db 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs @@ -11,7 +11,24 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads { public override PayloadType Type => PayloadType.RawText; - public string Text { get; set; } + private string textConverted = null; + + /// + /// The Text of this text payload as an UTF-8 converted string. + /// Don't rely on this for accurate representation of SE payload data, please check RawData instead. + /// + public string Text { + get { return this.textConverted ??= Encoding.UTF8.GetString(RawData); } + set { + this.textConverted = value; + RawData = Encoding.UTF8.GetBytes(value); + } + } + + /// + /// The raw unconverted data of this text payload. + /// + public byte[] RawData { get; set; } public TextPayload() { } diff --git a/Dalamud/Game/Internal/Gui/ChatGui.cs b/Dalamud/Game/Internal/Gui/ChatGui.cs index 6ef458cb9..c9eb128c9 100644 --- a/Dalamud/Game/Internal/Gui/ChatGui.cs +++ b/Dalamud/Game/Internal/Gui/ChatGui.cs @@ -113,6 +113,7 @@ namespace Dalamud.Game.Internal.Gui { Log.Verbose("SeString was edited, taking precedence over StdString edit."); message.RawData = newEdited; } + Log.Debug($"\nOLD: {BitConverter.ToString(originalMessageData)}\nNEW: {BitConverter.ToString(newEdited)}"); var messagePtr = pMessage; OwnedStdString allocatedString = null;