Make chat & examine systems use FormattedMessage.EscapeText() (#28431)

This commit is contained in:
Leon Friedrich
2024-06-01 08:05:34 +12:00
committed by GitHub
parent 2ddca94375
commit c4291920a6
3 changed files with 15 additions and 6 deletions

View File

@@ -239,9 +239,7 @@ namespace Content.Client.Examine
if (knowTarget)
{
// TODO: FormattedMessage.RemoveMarkupPermissive
// var itemName = FormattedMessage.RemoveMarkupPermissive(Identity.Name(target, EntityManager, player));
var itemName = FormattedMessage.FromMarkupPermissive(Identity.Name(target, EntityManager, player)).ToString();
var itemName = FormattedMessage.EscapeText(Identity.Name(target, EntityManager, player));
var labelMessage = FormattedMessage.FromMarkupPermissive($"[bold]{itemName}[/bold]");
var label = new RichTextLabel();
label.SetMessage(labelMessage);
@@ -250,7 +248,7 @@ namespace Content.Client.Examine
else
{
var label = new RichTextLabel();
label.SetMessage(FormattedMessage.FromMarkup("[bold]???[/bold]"));
label.SetMessage(FormattedMessage.FromMarkupOrThrow("[bold]???[/bold]"));
hBox.AddChild(label);
}

View File

@@ -378,7 +378,7 @@ public sealed partial class ChatSystem : SharedChatSystem
if (!_actionBlocker.CanSpeak(source) && !ignoreActionBlocker)
return;
var message = TransformSpeech(source, FormattedMessage.RemoveMarkup(originalMessage));
var message = TransformSpeech(source, originalMessage);
if (message.Length == 0)
return;
@@ -417,7 +417,7 @@ public sealed partial class ChatSystem : SharedChatSystem
// To avoid logging any messages sent by entities that are not players, like vendors, cloning, etc.
// Also doesn't log if hideLog is true.
if (!HasComp<ActorComponent>(source) || hideLog == true)
if (!HasComp<ActorComponent>(source) || hideLog)
return;
if (originalMessage == message)

View File

@@ -11,8 +11,19 @@ namespace Content.Shared.Chat
public sealed class ChatMessage
{
public ChatChannel Channel;
/// <summary>
/// This is the text spoken by the entity, after accents and such were applied.
/// This should have <see cref="FormattedMessage.EscapeText"/> applied before using it in any rich text box.
/// </summary>
public string Message;
/// <summary>
/// This is the <see cref="Message"/> but with special characters escaped and wrapped in some rich text
/// formatting tags.
/// </summary>
public string WrappedMessage;
public NetEntity SenderEntity;
/// <summary>