From 8a49a5ee484177e83ade8078486ee7b5f93d924e Mon Sep 17 00:00:00 2001 From: Haselnussbomber Date: Fri, 19 Dec 2025 17:39:31 +0100 Subject: [PATCH] Use spread element for TextArrowPayloads Also changes CreatePartyFinderLink to use client-language-based text. --- .../Game/Text/SeStringHandling/SeString.cs | 54 +++++++------------ 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/Dalamud/Game/Text/SeStringHandling/SeString.cs b/Dalamud/Game/Text/SeStringHandling/SeString.cs index ca14299db..b94b05cac 100644 --- a/Dalamud/Game/Text/SeStringHandling/SeString.cs +++ b/Dalamud/Game/Text/SeStringHandling/SeString.cs @@ -250,16 +250,12 @@ public class SeString var mapPayload = new MapLinkPayload(territoryId, mapId, rawX, rawY); var nameString = GetMapLinkNameString(mapPayload.PlaceName, instance, mapPayload.CoordinateString); - var payloads = new List(new Payload[] - { + return new SeString(new List([ mapPayload, - // arrow goes here + ..TextArrowPayloads, new TextPayload(nameString), RawPayload.LinkTerminator, - }); - payloads.InsertRange(1, TextArrowPayloads); - - return new SeString(payloads); + ])); } /// @@ -290,16 +286,12 @@ public class SeString var mapPayload = new MapLinkPayload(territoryId, mapId, xCoord, yCoord, fudgeFactor); var nameString = GetMapLinkNameString(mapPayload.PlaceName, instance, mapPayload.CoordinateString); - var payloads = new List(new Payload[] - { + return new SeString(new List([ mapPayload, - // arrow goes here + ..TextArrowPayloads, new TextPayload(nameString), RawPayload.LinkTerminator, - }); - payloads.InsertRange(1, TextArrowPayloads); - - return new SeString(payloads); + ])); } /// @@ -355,21 +347,15 @@ public class SeString /// An SeString containing all the payloads necessary to display a party finder link in the chat log. public static SeString CreatePartyFinderLink(uint listingId, string recruiterName, bool isCrossWorld = false) { - var payloads = new List() - { + var clientState = Service.Get(); + var seStringEvaluator = Service.Get(); + + return new SeString(new List([ new PartyFinderPayload(listingId, isCrossWorld ? PartyFinderPayload.PartyFinderLinkType.NotSpecified : PartyFinderPayload.PartyFinderLinkType.LimitedToHomeWorld), - // -> - new TextPayload($"Looking for Party ({recruiterName})" + (isCrossWorld ? " " : string.Empty)), - }; - - payloads.InsertRange(1, TextArrowPayloads); - - if (isCrossWorld) - payloads.Add(new IconPayload(BitmapFontIcon.CrossWorld)); - - payloads.Add(RawPayload.LinkTerminator); - - return new SeString(payloads); + ..TextArrowPayloads, + ..SeString.Parse(seStringEvaluator.EvaluateFromAddon(2265, [recruiterName, isCrossWorld ? 0 : 1], clientState.ClientLanguage)).Payloads, + RawPayload.LinkTerminator + ])); } /// @@ -379,16 +365,12 @@ public class SeString /// An SeString containing all the payloads necessary to display a link to the party finder search conditions. public static SeString CreatePartyFinderSearchConditionsLink(string message) { - var payloads = new List() - { + return new SeString(new List([ new PartyFinderPayload(), - // -> + ..TextArrowPayloads, new TextPayload(message), - }; - payloads.InsertRange(1, TextArrowPayloads); - payloads.Add(RawPayload.LinkTerminator); - - return new SeString(payloads); + RawPayload.LinkTerminator + ])); } ///