From 96dc085b35c784b31521cf56e9432f4e32b91236 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 29 Oct 2023 21:15:59 +0000 Subject: [PATCH] Make lobby option tooltips work the same as factions. --- OpenRA.Game/Traits/TraitsInterfaces.cs | 2 +- .../Widgets/Logic/Lobby/LobbyOptionsLogic.cs | 13 +++++++++++-- .../Widgets/Logic/Lobby/LobbyUtils.cs | 2 +- .../Widgets/Logic/MissionBrowserLogic.cs | 13 +++++++++++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index dc8bdbcfb4..6ce8d3842a 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -583,7 +583,7 @@ namespace OpenRA.Traits { Id = id; Name = map.GetLocalisedString(name); - Description = description != null ? map.GetLocalisedString(description) : null; + Description = description != null ? map.GetLocalisedString(description).Replace(@"\n", "\n") : null; IsVisible = visible; DisplayOrder = displayorder; Values = values.ToDictionary(v => v.Key, v => map.GetLocalisedString(v.Value)); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs index e56e9ef1d1..25de1151c5 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs @@ -107,7 +107,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic checkbox.GetText = () => option.Name; if (option.Description != null) - checkbox.GetTooltipText = () => option.Description; + { + var (text, desc) = LobbyUtils.SplitOnFirstToken(option.Description); + checkbox.GetTooltipText = () => text; + checkbox.GetTooltipDesc = () => desc; + } checkbox.IsVisible = () => true; checkbox.IsChecked = () => optionEnabled.Update(orderManager.LobbyInfo.GlobalSettings); @@ -148,7 +152,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.GetText = () => getOptionLabel.Update(optionValue.Update(orderManager.LobbyInfo.GlobalSettings).Value); if (option.Description != null) - dropdown.GetTooltipText = () => option.Description; + { + var (text, desc) = LobbyUtils.SplitOnFirstToken(option.Description); + dropdown.GetTooltipText = () => text; + dropdown.GetTooltipDesc = () => desc; + } + dropdown.IsVisible = () => true; dropdown.IsDisabled = () => configurationDisabled() || optionValue.Update(orderManager.LobbyInfo.GlobalSettings).IsLocked; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs index 56cb1d1d0f..970ccb5ff7 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs @@ -200,7 +200,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } /// Splits a string into two parts on the first instance of a given token. - static (string First, string Second) SplitOnFirstToken(string input, string token = "\n") + public static (string First, string Second) SplitOnFirstToken(string input, string token = "\n") { if (string.IsNullOrEmpty(input)) return (null, null); diff --git a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs index a1fad3f656..546c8c56c0 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs @@ -342,7 +342,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic checkbox.GetText = () => option.Name; if (option.Description != null) - checkbox.GetTooltipText = () => option.Description; + { + var (text, desc) = LobbyUtils.SplitOnFirstToken(option.Description); + checkbox.GetTooltipText = () => text; + checkbox.GetTooltipDesc = () => desc; + } checkbox.IsVisible = () => true; checkbox.IsChecked = () => missionOptions[option.Id] == "True"; @@ -376,7 +380,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.GetText = () => option.Values[missionOptions[option.Id]]; if (option.Description != null) - dropdown.GetTooltipText = () => option.Description; + { + var (text, desc) = LobbyUtils.SplitOnFirstToken(option.Description); + dropdown.GetTooltipText = () => text; + dropdown.GetTooltipDesc = () => desc; + } + dropdown.IsVisible = () => true; dropdown.IsDisabled = () => option.IsLocked;