SanitizeMessagePeriod: Add Period at the end of sentences (#10710)

Co-authored-by: Visne <39844191+Visne@users.noreply.github.com>
This commit is contained in:
Tomás Alves
2022-08-31 13:42:46 +01:00
committed by GitHub
parent 168caa6032
commit f8c18c0b41
3 changed files with 24 additions and 5 deletions

View File

@@ -74,7 +74,7 @@ public sealed partial class ChatSystem
} }
// Re-capitalize message since we removed the prefix. // Re-capitalize message since we removed the prefix.
message = SanitizeMessageCapital(source, message); message = SanitizeMessageCapital(message);
if (_inventory.TryGetSlotEntity(source, "ears", out var entityUid) && if (_inventory.TryGetSlotEntity(source, "ears", out var entityUid) &&
TryComp(entityUid, out HeadsetComponent? headset)) TryComp(entityUid, out HeadsetComponent? headset))

View File

@@ -127,8 +127,9 @@ public sealed partial class ChatSystem : SharedChatSystem
return; return;
bool shouldCapitalize = (desiredType != InGameICChatType.Emote); bool shouldCapitalize = (desiredType != InGameICChatType.Emote);
bool shouldPunctuate = _configurationManager.GetCVar(CCVars.ChatPunctuation);
message = SanitizeInGameICMessage(source, message, out var emoteStr, shouldCapitalize); message = SanitizeInGameICMessage(source, message, out var emoteStr, shouldCapitalize, shouldPunctuate);
// Was there an emote in the message? If so, send it. // Was there an emote in the message? If so, send it.
if (player != null && emoteStr != message && emoteStr != null) if (player != null && emoteStr != message && emoteStr != null)
@@ -423,11 +424,13 @@ public sealed partial class ChatSystem : SharedChatSystem
} }
// ReSharper disable once InconsistentNaming // ReSharper disable once InconsistentNaming
private string SanitizeInGameICMessage(EntityUid source, string message, out string? emoteStr, bool capitalize = true) private string SanitizeInGameICMessage(EntityUid source, string message, out string? emoteStr, bool capitalize = true, bool punctuate = false)
{ {
var newMessage = message.Trim(); var newMessage = message.Trim();
if (capitalize) if (capitalize)
newMessage = SanitizeMessageCapital(source, newMessage); newMessage = SanitizeMessageCapital(newMessage);
if (punctuate)
newMessage = SanitizeMessagePeriod(newMessage);
newMessage = FormattedMessage.EscapeText(newMessage); newMessage = FormattedMessage.EscapeText(newMessage);
_sanitizer.TrySanitizeOutSmilies(newMessage, source, out newMessage, out emoteStr); _sanitizer.TrySanitizeOutSmilies(newMessage, source, out newMessage, out emoteStr);
@@ -460,7 +463,7 @@ public sealed partial class ChatSystem : SharedChatSystem
.Select(p => p.ConnectedClient); .Select(p => p.ConnectedClient);
} }
private string SanitizeMessageCapital(EntityUid source, string message) private string SanitizeMessageCapital(string message)
{ {
if (string.IsNullOrEmpty(message)) if (string.IsNullOrEmpty(message))
return message; return message;
@@ -469,6 +472,16 @@ public sealed partial class ChatSystem : SharedChatSystem
return message; return message;
} }
private string SanitizeMessagePeriod(string message)
{
if (string.IsNullOrEmpty(message))
return message;
// Adds a period if the last character is a letter.
if (char.IsLetter(message[^1]))
message += ".";
return message;
}
private void ClientDistanceToList(EntityUid source, int voiceRange, List<ICommonSession> playerSessions) private void ClientDistanceToList(EntityUid source, int voiceRange, List<ICommonSession> playerSessions)
{ {
var ghosts = GetEntityQuery<GhostComponent>(); var ghosts = GetEntityQuery<GhostComponent>();

View File

@@ -1072,6 +1072,12 @@ namespace Content.Shared.CCVar
public static readonly CVarDef<bool> FlavorText = public static readonly CVarDef<bool> FlavorText =
CVarDef.Create("ic.flavor_text", false, CVar.SERVER | CVar.REPLICATED); CVarDef.Create("ic.flavor_text", false, CVar.SERVER | CVar.REPLICATED);
/// <summary>
/// Adds a period at the end of a sentence if the sentence ends in a letter.
/// </summary>
public static readonly CVarDef<bool> ChatPunctuation =
CVarDef.Create("ic.punctuation", false, CVar.SERVER);
/* /*
* Salvage * Salvage
*/ */