diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs index 99969cb3ed..2df32c999d 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs @@ -104,6 +104,18 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.ShowDropDown("SPAWN_DROPDOWN_TEMPLATE", 150, spawnPoints, setupItem); } + /// Splits a string into two parts on the first instance of a given token. + static Pair SplitOnFirstToken(string input, string token = "\\n") + { + if (string.IsNullOrEmpty(input)) + return Pair.New(null, null); + + var split = input.IndexOf(token, StringComparison.Ordinal); + var first = split > 0 ? input.Substring(0, split) : input; + var second = split > 0 ? input.Substring(split + token.Length) : null; + return Pair.New(first, second); + } + public static void ShowFactionDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Dictionary factions) { @@ -118,11 +130,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic flag.GetImageCollection = () => "flags"; flag.GetImageName = () => factionId; - var factionName = faction.Description.SubstringBefore("\\n", StringComparison.Ordinal); - var factionDescription = faction.Description.SubstringAfter("\\n", StringComparison.Ordinal); - item.GetTooltipText = () => factionName; - if (factionDescription != factionName) - item.GetTooltipDesc = () => factionDescription; + var tooltip = SplitOnFirstToken(faction.Description); + item.GetTooltipText = () => tooltip.First; + item.GetTooltipDesc = () => tooltip.Second; return item; }; @@ -414,11 +424,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.IsDisabled = () => s.LockFaction || orderManager.LocalClient.IsReady; dropdown.OnMouseDown = _ => ShowFactionDropDown(dropdown, c, orderManager, factions); - var factionName = factions[c.Faction].Description.SubstringBefore("\\n", StringComparison.Ordinal); - var factionDescription = factions[c.Faction].Description.SubstringAfter("\\n", StringComparison.Ordinal); - dropdown.GetTooltipText = () => factionName; - if (factionDescription != factionName) - dropdown.GetTooltipDesc = () => factionDescription; + var tooltip = SplitOnFirstToken(factions[c.Faction].Description); + dropdown.GetTooltipText = () => tooltip.First; + dropdown.GetTooltipDesc = () => tooltip.Second; SetupFactionWidget(dropdown, s, c, factions); }