diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 32a2d0b36d..892579ca9e 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -581,7 +581,7 @@ namespace OpenRA Log.Write("debug", "Taking screenshot " + path); Renderer.SaveScreenshot(path); - TextNotificationsManager.Debug(ModData.Translation.GetString(SavedScreenshot, Translation.Arguments("filename", filename))); + TextNotificationsManager.Debug(TranslationProvider.GetString(SavedScreenshot, Translation.Arguments("filename", filename))); } } diff --git a/OpenRA.Game/Map/Map.cs b/OpenRA.Game/Map/Map.cs index 86f80c281d..abfaf965aa 100644 --- a/OpenRA.Game/Map/Map.cs +++ b/OpenRA.Game/Map/Map.cs @@ -256,8 +256,6 @@ namespace OpenRA CellLayer projectedHeight; Rectangle projectionSafeBounds; - internal Translation Translation; - public static string ComputeUID(IReadOnlyPackage package) { return ComputeUID(package, GetMapFormat(package)); @@ -450,8 +448,6 @@ namespace OpenRA } Sequences = new SequenceSet(this, modData, Tileset, SequenceDefinitions); - Translation = TranslationDefinitions == null ? null - : new Translation(Game.Settings.Player.Language, FieldLoader.GetValue("value", TranslationDefinitions.Value), this); var tl = new MPos(0, 0).ToCPos(this); var br = new MPos(MapSize.X - 1, MapSize.Y - 1).ToCPos(this); @@ -1411,14 +1407,6 @@ namespace OpenRA return false; } - public string Translate(string key, IDictionary args = null) - { - if (Translation != null && Translation.TryGetString(key, out var message, args)) - return message; - - return modData.Translation.GetString(key, args); - } - public void Dispose() { Sequences.Dispose(); diff --git a/OpenRA.Game/Map/MapPreview.cs b/OpenRA.Game/Map/MapPreview.cs index d3d4537b62..f13b5602c7 100644 --- a/OpenRA.Game/Map/MapPreview.cs +++ b/OpenRA.Game/Map/MapPreview.cs @@ -199,10 +199,14 @@ namespace OpenRA public long DownloadBytes { get; private set; } public int DownloadPercentage { get; private set; } + /// + /// Functionality mirrors , except instead of using + /// loaded 's translations as backup, we use this 's. + /// public string GetLocalisedString(string key, IDictionary args = null) { - // PERF: instead of loading mod level Translation for each MapPreview, reuse the already loaded one in modData. - if (modData.Translation.TryGetString(key, out var message, args)) + // PERF: instead of loading mod level Translation per each MapPreview, reuse the already loaded one in TranslationProvider. + if (TranslationProvider.TryGetModString(key, out var message, args)) return message; return innerData.Translation?.GetString(key, args) ?? key; diff --git a/OpenRA.Game/ModData.cs b/OpenRA.Game/ModData.cs index ff50f2e24b..e6d485330f 100644 --- a/OpenRA.Game/ModData.cs +++ b/OpenRA.Game/ModData.cs @@ -36,7 +36,6 @@ namespace OpenRA public readonly IModelSequenceLoader ModelSequenceLoader; public readonly IVideoLoader[] VideoLoaders; public readonly HotkeyManager Hotkeys; - public readonly Translation Translation; public ILoadScreen LoadScreen { get; } public CursorProvider CursorProvider { get; private set; } public FS ModFiles; @@ -102,8 +101,6 @@ namespace OpenRA Hotkeys = new HotkeyManager(ModFiles, Game.Settings.Keys, Manifest); - Translation = new Translation(Game.Settings.Player.Language, Manifest.Translations, DefaultFileSystem); - defaultRules = Exts.Lazy(() => Ruleset.LoadDefaults(this)); defaultTerrainInfo = Exts.Lazy(() => { @@ -137,6 +134,7 @@ namespace OpenRA // horribly when you use ModData in unexpected ways. ChromeMetrics.Initialize(this); ChromeProvider.Initialize(this); + TranslationProvider.Initialize(this, fileSystem); Game.Sound.Initialize(SoundLoaders, fileSystem); diff --git a/OpenRA.Game/Network/LocalizedMessage.cs b/OpenRA.Game/Network/LocalizedMessage.cs index 4c9a70682e..73585c9415 100644 --- a/OpenRA.Game/Network/LocalizedMessage.cs +++ b/OpenRA.Game/Network/LocalizedMessage.cs @@ -76,7 +76,7 @@ namespace OpenRA.Network return arguments.ToArray(); } - public LocalizedMessage(ModData modData, MiniYaml yaml) + public LocalizedMessage(MiniYaml yaml) { // Let the FieldLoader do the dirty work of loading the public fields. FieldLoader.Load(this, yaml); @@ -95,7 +95,7 @@ namespace OpenRA.Network argumentDictionary.Add(argument.Key, argument.Value); } - TranslatedText = modData.Translation.GetString(Key, argumentDictionary); + TranslatedText = TranslationProvider.GetString(Key, argumentDictionary); } public static string Serialize(string key, Dictionary arguments = null) diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs index 33d611fad1..b869caa8ef 100644 --- a/OpenRA.Game/Network/UnitOrders.cs +++ b/OpenRA.Game/Network/UnitOrders.cs @@ -43,7 +43,7 @@ namespace OpenRA.Network var yaml = MiniYaml.FromString(order.TargetString); foreach (var node in yaml) { - var localizedMessage = new LocalizedMessage(Game.ModData, node.Value); + var localizedMessage = new LocalizedMessage(node.Value); TextNotificationsManager.AddSystemLine(localizedMessage.TranslatedText); } diff --git a/OpenRA.Game/Server/Server.cs b/OpenRA.Game/Server/Server.cs index 71cfb5ab3b..f070670f4f 100644 --- a/OpenRA.Game/Server/Server.cs +++ b/OpenRA.Game/Server/Server.cs @@ -958,7 +958,7 @@ namespace OpenRA.Server DispatchServerOrdersToClients(Order.FromTargetString("LocalizedMessage", text, true)); if (Type == ServerType.Dedicated) - WriteLineWithTimeStamp(ModData.Translation.GetString(key, arguments)); + WriteLineWithTimeStamp(TranslationProvider.GetString(key, arguments)); } public void SendLocalizedMessageTo(Connection conn, string key, Dictionary arguments = null) @@ -1312,7 +1312,7 @@ namespace OpenRA.Server { lock (LobbyInfo) { - WriteLineWithTimeStamp(ModData.Translation.GetString(GameStarted)); + WriteLineWithTimeStamp(TranslationProvider.GetString(GameStarted)); // Drop any players who are not ready foreach (var c in Conns.Where(c => !c.Validated || GetClient(c).IsInvalid).ToArray()) diff --git a/OpenRA.Game/TranslationProvider.cs b/OpenRA.Game/TranslationProvider.cs new file mode 100644 index 0000000000..3620d84322 --- /dev/null +++ b/OpenRA.Game/TranslationProvider.cs @@ -0,0 +1,76 @@ +#region Copyright & License Information +/* + * Copyright (c) The OpenRA Developers and Contributors + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Collections.Generic; +using OpenRA.FileSystem; + +namespace OpenRA +{ + public static class TranslationProvider + { + // Ensure thread-safety. + static readonly object SyncObject = new(); + static Translation modTranslation; + static Translation mapTranslation; + + public static void Initialize(ModData modData, IReadOnlyFileSystem fileSystem) + { + lock (SyncObject) + { + modTranslation = new Translation(Game.Settings.Player.Language, modData.Manifest.Translations, fileSystem); + mapTranslation = fileSystem is Map map && map.TranslationDefinitions != null + ? new Translation(Game.Settings.Player.Language, FieldLoader.GetValue("value", map.TranslationDefinitions.Value), fileSystem) + : null; + } + } + + public static string GetString(string key, IDictionary args = null) + { + lock (SyncObject) + { + // By prioritizing mod-level translations we prevent maps from overwriting translation keys. We do not want to + // allow maps to change the UI nor any other strings not exposed to the map. + if (modTranslation.TryGetString(key, out var message, args)) + return message; + + if (mapTranslation != null) + return mapTranslation.GetString(key, args); + + return key; + } + } + + public static bool TryGetString(string key, out string message, IDictionary args = null) + { + lock (SyncObject) + { + // By prioritizing mod-level translations we prevent maps from overwriting translation keys. We do not want to + // allow maps to change the UI nor any other strings not exposed to the map. + if (modTranslation.TryGetString(key, out message, args)) + return true; + + if (mapTranslation != null && mapTranslation.TryGetString(key, out message, args)) + return true; + + return false; + } + } + + /// Should only be used by . + internal static bool TryGetModString(string key, out string message, IDictionary args = null) + { + lock (SyncObject) + { + return modTranslation.TryGetString(key, out message, args); + } + } + } +} diff --git a/OpenRA.Mods.Cnc/Installer/ExtractMixSourceAction.cs b/OpenRA.Mods.Cnc/Installer/ExtractMixSourceAction.cs index c81f4bf5d1..57a7763a6a 100644 --- a/OpenRA.Mods.Cnc/Installer/ExtractMixSourceAction.cs +++ b/OpenRA.Mods.Cnc/Installer/ExtractMixSourceAction.cs @@ -49,9 +49,9 @@ namespace OpenRA.Mods.Cnc.Installer Action onProgress = null; if (stream.Length < InstallFromSourceLogic.ShowPercentageThreshold) - updateMessage(modData.Translation.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); + updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); else - onProgress = b => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / stream.Length))); + onProgress = b => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / stream.Length))); using (var target = File.OpenWrite(targetPath)) { diff --git a/OpenRA.Mods.Common/Commands/ChatCommands.cs b/OpenRA.Mods.Common/Commands/ChatCommands.cs index 53b68a018a..4531cdc967 100644 --- a/OpenRA.Mods.Common/Commands/ChatCommands.cs +++ b/OpenRA.Mods.Common/Commands/ChatCommands.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Commands if (command.Value != null) command.Value.InvokeCommand(name.ToLowerInvariant(), message[(1 + name.Length)..].Trim()); else - TextNotificationsManager.Debug(Game.ModData.Translation.GetString(InvalidCommand, Translation.Arguments("name", name))); + TextNotificationsManager.Debug(TranslationProvider.GetString(InvalidCommand, Translation.Arguments("name", name))); return false; } diff --git a/OpenRA.Mods.Common/Commands/DevCommands.cs b/OpenRA.Mods.Common/Commands/DevCommands.cs index 2b7b9b32fd..43144f8a1f 100644 --- a/OpenRA.Mods.Common/Commands/DevCommands.cs +++ b/OpenRA.Mods.Common/Commands/DevCommands.cs @@ -121,7 +121,7 @@ namespace OpenRA.Mods.Common.Commands if (!developerMode.Enabled) { - TextNotificationsManager.Debug(Game.ModData.Translation.GetString(CheatsDisabled)); + TextNotificationsManager.Debug(TranslationProvider.GetString(CheatsDisabled)); return; } @@ -149,7 +149,7 @@ namespace OpenRA.Mods.Common.Commands giveCashOrder.ExtraData = (uint)cash; else { - TextNotificationsManager.Debug(Game.ModData.Translation.GetString(InvalidCashAmount)); + TextNotificationsManager.Debug(TranslationProvider.GetString(InvalidCashAmount)); return; } diff --git a/OpenRA.Mods.Common/Commands/HelpCommand.cs b/OpenRA.Mods.Common/Commands/HelpCommand.cs index b6abf13ac7..92b294ebfd 100644 --- a/OpenRA.Mods.Common/Commands/HelpCommand.cs +++ b/OpenRA.Mods.Common/Commands/HelpCommand.cs @@ -51,12 +51,12 @@ namespace OpenRA.Mods.Common.Commands public void InvokeCommand(string name, string arg) { - TextNotificationsManager.Debug(Game.ModData.Translation.GetString(AvailableCommands)); + TextNotificationsManager.Debug(TranslationProvider.GetString(AvailableCommands)); foreach (var key in console.Commands.Keys) { if (!helpDescriptions.TryGetValue(key, out var description)) - description = Game.ModData.Translation.GetString(NoDescription); + description = TranslationProvider.GetString(NoDescription); TextNotificationsManager.Debug($"{key}: {description}"); } @@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Commands public void RegisterHelp(string name, string description) { - helpDescriptions[name] = Game.ModData.Translation.GetString(description); + helpDescriptions[name] = TranslationProvider.GetString(description); } } } diff --git a/OpenRA.Mods.Common/Installer/SourceActions/CopySourceAction.cs b/OpenRA.Mods.Common/Installer/SourceActions/CopySourceAction.cs index fcf9d60d38..9a0dacf2bd 100644 --- a/OpenRA.Mods.Common/Installer/SourceActions/CopySourceAction.cs +++ b/OpenRA.Mods.Common/Installer/SourceActions/CopySourceAction.cs @@ -44,9 +44,9 @@ namespace OpenRA.Mods.Common.Installer Action onProgress = null; if (length < InstallFromSourceLogic.ShowPercentageThreshold) - updateMessage(modData.Translation.GetString(InstallFromSourceLogic.CopyingFilename, Translation.Arguments("filename", displayFilename))); + updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.CopyingFilename, Translation.Arguments("filename", displayFilename))); else - onProgress = b => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.CopyingFilenameProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length))); + onProgress = b => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.CopyingFilenameProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length))); InstallerUtils.CopyStream(source, target, length, onProgress); } diff --git a/OpenRA.Mods.Common/Installer/SourceActions/ExtractBlastSourceAction.cs b/OpenRA.Mods.Common/Installer/SourceActions/ExtractBlastSourceAction.cs index 4d389e5c91..f8f9e32c55 100644 --- a/OpenRA.Mods.Common/Installer/SourceActions/ExtractBlastSourceAction.cs +++ b/OpenRA.Mods.Common/Installer/SourceActions/ExtractBlastSourceAction.cs @@ -67,9 +67,9 @@ namespace OpenRA.Mods.Common.Installer Action onProgress = null; if (length < InstallFromSourceLogic.ShowPercentageThreshold) - updateMessage(modData.Translation.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); + updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); else - onProgress = b => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length))); + onProgress = b => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length))); using (var target = File.OpenWrite(targetPath)) { diff --git a/OpenRA.Mods.Common/Installer/SourceActions/ExtractIscabSourceAction.cs b/OpenRA.Mods.Common/Installer/SourceActions/ExtractIscabSourceAction.cs index 32e0fde007..5f491eb08e 100644 --- a/OpenRA.Mods.Common/Installer/SourceActions/ExtractIscabSourceAction.cs +++ b/OpenRA.Mods.Common/Installer/SourceActions/ExtractIscabSourceAction.cs @@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Installer { Log.Write("install", $"Extracting {sourcePath} -> {targetPath}"); var displayFilename = Path.GetFileName(Path.GetFileName(targetPath)); - void OnProgress(int percent) => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent))); + void OnProgress(int percent) => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent))); reader.ExtractFile(node.Value.Value, target, OnProgress); } } diff --git a/OpenRA.Mods.Common/Installer/SourceActions/ExtractMscabSourceAction.cs b/OpenRA.Mods.Common/Installer/SourceActions/ExtractMscabSourceAction.cs index da1e427a84..8c313a3a7b 100644 --- a/OpenRA.Mods.Common/Installer/SourceActions/ExtractMscabSourceAction.cs +++ b/OpenRA.Mods.Common/Installer/SourceActions/ExtractMscabSourceAction.cs @@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Installer { Log.Write("install", $"Extracting {sourcePath} -> {targetPath}"); var displayFilename = Path.GetFileName(Path.GetFileName(targetPath)); - void OnProgress(int percent) => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent))); + void OnProgress(int percent) => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent))); reader.ExtractFile(node.Value.Value, target, OnProgress); } } diff --git a/OpenRA.Mods.Common/Installer/SourceActions/ExtractRawSourceAction.cs b/OpenRA.Mods.Common/Installer/SourceActions/ExtractRawSourceAction.cs index 19f65689fa..434c55e25a 100644 --- a/OpenRA.Mods.Common/Installer/SourceActions/ExtractRawSourceAction.cs +++ b/OpenRA.Mods.Common/Installer/SourceActions/ExtractRawSourceAction.cs @@ -60,9 +60,9 @@ namespace OpenRA.Mods.Common.Installer Action onProgress = null; if (length < InstallFromSourceLogic.ShowPercentageThreshold) - updateMessage(modData.Translation.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); + updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); else - onProgress = b => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length))); + onProgress = b => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length))); using (var target = File.OpenWrite(targetPath)) { diff --git a/OpenRA.Mods.Common/Installer/SourceActions/ExtractZipSourceAction.cs b/OpenRA.Mods.Common/Installer/SourceActions/ExtractZipSourceAction.cs index a1f3adfc6c..968f4df3da 100644 --- a/OpenRA.Mods.Common/Installer/SourceActions/ExtractZipSourceAction.cs +++ b/OpenRA.Mods.Common/Installer/SourceActions/ExtractZipSourceAction.cs @@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Installer using (var targetStream = File.OpenWrite(targetPath)) sourceStream.CopyTo(targetStream); - updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100))); + updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100))); extracted.Add(targetPath); } diff --git a/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs b/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs index e9510e2b80..be097f9824 100644 --- a/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs +++ b/OpenRA.Mods.Common/Scripting/Global/UserInterfaceGlobal.cs @@ -51,10 +51,10 @@ namespace OpenRA.Mods.Common.Scripting.Global } } - return Context.World.Map.Translate(text, argumentDictionary); + return TranslationProvider.GetString(text, argumentDictionary); } - return Context.World.Map.Translate(text); + return TranslationProvider.GetString(text); } } } diff --git a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs index 15a6bc3e96..347f3da870 100644 --- a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs +++ b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs @@ -279,7 +279,7 @@ namespace OpenRA.Mods.Common.Traits } var arguments = Translation.Arguments("cheat", order.OrderString, "player", self.Owner.PlayerName, "suffix", debugSuffix); - TextNotificationsManager.Debug(Game.ModData.Translation.GetString(CheatUsed, arguments)); + TextNotificationsManager.Debug(TranslationProvider.GetString(CheatUsed, arguments)); } bool IUnlocksRenderPlayer.RenderPlayerUnlocked => Enabled; diff --git a/OpenRA.Mods.Common/Traits/World/MapOptions.cs b/OpenRA.Mods.Common/Traits/World/MapOptions.cs index b268c4bfa5..e28207df80 100644 --- a/OpenRA.Mods.Common/Traits/World/MapOptions.cs +++ b/OpenRA.Mods.Common/Traits/World/MapOptions.cs @@ -92,7 +92,7 @@ namespace OpenRA.Mods.Common.Traits techLevels, TechLevel, TechLevelDropdownLocked); var gameSpeeds = Game.ModData.Manifest.Get(); - var speeds = gameSpeeds.Speeds.ToDictionary(s => s.Key, s => Game.ModData.Translation.GetString(s.Value.Name)); + var speeds = gameSpeeds.Speeds.ToDictionary(s => s.Key, s => TranslationProvider.GetString(s.Value.Name)); // NOTE: This is just exposing the UI, the backend logic for this option is hardcoded in World. yield return new LobbyOption(map, "gamespeed", diff --git a/OpenRA.Mods.Common/Traits/World/TimeLimitManager.cs b/OpenRA.Mods.Common/Traits/World/TimeLimitManager.cs index 258117b323..b87c591ea8 100644 --- a/OpenRA.Mods.Common/Traits/World/TimeLimitManager.cs +++ b/OpenRA.Mods.Common/Traits/World/TimeLimitManager.cs @@ -87,9 +87,9 @@ namespace OpenRA.Mods.Common.Traits var timelimits = TimeLimitOptions.ToDictionary(m => m.ToString(), m => { if (m == 0) - return Game.ModData.Translation.GetString(NoTimeLimit); + return TranslationProvider.GetString(NoTimeLimit); else - return Game.ModData.Translation.GetString(TimeLimitOption, Translation.Arguments("minutes", m)); + return TranslationProvider.GetString(TimeLimitOption, Translation.Arguments("minutes", m)); }); yield return new LobbyOption(map, "timelimit", TimeLimitLabel, TimeLimitDescription, TimeLimitDropdownVisible, TimeLimitDisplayOrder, @@ -181,7 +181,7 @@ namespace OpenRA.Mods.Common.Traits countdownLabel.GetText = () => null; if (!info.SkipTimerExpiredNotification) - TextNotificationsManager.AddSystemLine(Game.ModData.Translation.GetString(TimeLimitExpired)); + TextNotificationsManager.AddSystemLine(TranslationProvider.GetString(TimeLimitExpired)); } } } diff --git a/OpenRA.Mods.Common/Widgets/ConfirmationDialogs.cs b/OpenRA.Mods.Common/Widgets/ConfirmationDialogs.cs index 65a8a8ee6d..b3eac40fc9 100644 --- a/OpenRA.Mods.Common/Widgets/ConfirmationDialogs.cs +++ b/OpenRA.Mods.Common/Widgets/ConfirmationDialogs.cs @@ -36,11 +36,11 @@ namespace OpenRA.Mods.Common.Widgets var cancelButton = prompt.GetOrNull("CANCEL_BUTTON"); var otherButton = prompt.GetOrNull("OTHER_BUTTON"); - var titleMessage = modData.Translation.GetString(title, titleArguments); + var titleMessage = TranslationProvider.GetString(title, titleArguments); prompt.Get("PROMPT_TITLE").GetText = () => titleMessage; var headerTemplate = prompt.Get("PROMPT_TEXT"); - var textMessage = modData.Translation.GetString(text, textArguments); + var textMessage = TranslationProvider.GetString(text, textArguments); var headerLines = textMessage.Split('\n'); var headerHeight = 0; foreach (var l in headerLines) @@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Widgets if (!string.IsNullOrEmpty(confirmText)) { - var confirmTextMessage = modData.Translation.GetString(confirmText); + var confirmTextMessage = TranslationProvider.GetString(confirmText); confirmButton.GetText = () => confirmTextMessage; } } @@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Widgets if (!string.IsNullOrEmpty(cancelText)) { - var cancelTextMessage = modData.Translation.GetString(cancelText); + var cancelTextMessage = TranslationProvider.GetString(cancelText); cancelButton.GetText = () => cancelTextMessage; } } @@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Widgets if (!string.IsNullOrEmpty(otherText)) { - var otherTextMessage = modData.Translation.GetString(otherText); + var otherTextMessage = TranslationProvider.GetString(otherText); otherButton.GetText = () => otherTextMessage; } } @@ -114,10 +114,10 @@ namespace OpenRA.Mods.Common.Widgets Func doValidate = null; ButtonWidget acceptButton = null, cancelButton = null; - var titleMessage = modData.Translation.GetString(title); + var titleMessage = TranslationProvider.GetString(title); panel.Get("PROMPT_TITLE").GetText = () => titleMessage; - var promptMessage = modData.Translation.GetString(prompt); + var promptMessage = TranslationProvider.GetString(prompt); panel.Get("PROMPT_TEXT").GetText = () => promptMessage; var input = panel.Get("INPUT_TEXT"); @@ -147,7 +147,7 @@ namespace OpenRA.Mods.Common.Widgets acceptButton = panel.Get("ACCEPT_BUTTON"); if (!string.IsNullOrEmpty(acceptText)) { - var acceptTextMessage = modData.Translation.GetString(acceptText); + var acceptTextMessage = TranslationProvider.GetString(acceptText); acceptButton.GetText = () => acceptTextMessage; } @@ -163,7 +163,7 @@ namespace OpenRA.Mods.Common.Widgets cancelButton = panel.Get("CANCEL_BUTTON"); if (!string.IsNullOrEmpty(cancelText)) { - var cancelTextMessage = modData.Translation.GetString(cancelText); + var cancelTextMessage = TranslationProvider.GetString(cancelText); cancelButton.GetText = () => cancelTextMessage; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/AssetBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/AssetBrowserLogic.cs index 76938f84a0..280ca0a368 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/AssetBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/AssetBrowserLogic.cs @@ -96,7 +96,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic this.modData = modData; panel = widget; - allPackages = modData.Translation.GetString(AllPackages); + allPackages = TranslationProvider.GetString(AllPackages); var colorPickerPalettes = world.WorldActor.TraitsImplementing() .SelectMany(p => p.ColorPickerPaletteNames) @@ -238,7 +238,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (frameText != null) { var soundLength = new CachedTransform(p => - modData.Translation.GetString(LengthInSeconds, Translation.Arguments("length", Math.Round(p, 3)))); + TranslationProvider.GetString(LengthInSeconds, Translation.Arguments("length", Math.Round(p, 3)))); frameText.GetText = () => { diff --git a/OpenRA.Mods.Common/Widgets/Logic/ConnectionLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ConnectionLogic.cs index a45f4d8225..25a5335878 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ConnectionLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ConnectionLogic.cs @@ -66,7 +66,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var panel = widget; panel.Get("ABORT_BUTTON").OnClick = () => { CloseWindow(); onAbort(); }; - var connectingDesc = modData.Translation.GetString(ConnectingToEndpoint, Translation.Arguments("endpoint", endpoint)); + var connectingDesc = TranslationProvider.GetString(ConnectingToEndpoint, Translation.Arguments("endpoint", endpoint)); widget.Get("CONNECTING_DESC").GetText = () => connectingDesc; } @@ -129,15 +129,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic onRetry(pass); }; - var connectingDescText = modData.Translation.GetString(CouldNotConnectToTarget, Translation.Arguments("target", connection.Target)); + var connectingDescText = TranslationProvider.GetString(CouldNotConnectToTarget, Translation.Arguments("target", connection.Target)); widget.Get("CONNECTING_DESC").GetText = () => connectingDescText; var connectionError = widget.Get("CONNECTION_ERROR"); - var connectionErrorText = orderManager.ServerError != null ? modData.Translation.GetString(orderManager.ServerError) : connection.ErrorMessage ?? modData.Translation.GetString(UnknownError); + var connectionErrorText = orderManager.ServerError != null ? TranslationProvider.GetString(orderManager.ServerError) : connection.ErrorMessage ?? TranslationProvider.GetString(UnknownError); connectionError.GetText = () => connectionErrorText; var panelTitle = widget.Get("TITLE"); - var panelTitleText = orderManager.AuthenticationFailed ? modData.Translation.GetString(PasswordRequired) : modData.Translation.GetString(ConnectionFailed); + var panelTitleText = orderManager.AuthenticationFailed ? TranslationProvider.GetString(PasswordRequired) : TranslationProvider.GetString(ConnectionFailed); panelTitle.GetText = () => panelTitleText; passwordField = panel.GetOrNull("PASSWORD"); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorEditLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorEditLogic.cs index a42799f3a9..6d40fa7841 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorEditLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorEditLogic.cs @@ -34,7 +34,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic enum ActorIDStatus { Normal = 0, Duplicate = 1, Empty = 3 } readonly WorldRenderer worldRenderer; - readonly ModData modData; readonly EditorActorLayer editorActorLayer; readonly EditorActionManager editorActionManager; readonly EditorViewportControllerWidget editor; @@ -86,9 +85,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic } [ObjectCreator.UseCtor] - public ActorEditLogic(Widget widget, ModData modData, World world, WorldRenderer worldRenderer, Dictionary logicArgs) + public ActorEditLogic(Widget widget, World world, WorldRenderer worldRenderer, Dictionary logicArgs) { - this.modData = modData; this.worldRenderer = worldRenderer; editorActorLayer = world.WorldActor.Trait(); @@ -115,8 +113,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic actorIDErrorLabel = actorEditPanel.Get("ACTOR_ID_ERROR_LABEL"); actorIDErrorLabel.IsVisible = () => actorIDStatus != ActorIDStatus.Normal; actorIDErrorLabel.GetText = () => actorIDStatus == ActorIDStatus.Duplicate ? - modData.Translation.GetString(DuplicateActorId) - : modData.Translation.GetString(EnterActorId); + TranslationProvider.GetString(DuplicateActorId) + : TranslationProvider.GetString(EnterActorId); if (logicArgs.TryGetValue("EditPanelPadding", out var yaml)) editPanelPadding = FieldLoader.GetValue("EditPanelPadding", yaml.Value); @@ -146,7 +144,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (editorActorLayer[actorId] != null) { nextActorIDStatus = ActorIDStatus.Duplicate; - actorIDErrorLabel.Text = modData.Translation.GetString(DuplicateActorId); + actorIDErrorLabel.Text = TranslationProvider.GetString(DuplicateActorId); actorIDErrorLabel.Visible = true; return; } @@ -230,7 +228,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic // Add owner dropdown var ownerContainer = dropdownOptionTemplate.Clone(); - var owner = modData.Translation.GetString(Owner); + var owner = TranslationProvider.GetString(Owner); ownerContainer.Get("LABEL").GetText = () => owner; var ownerDropdown = ownerContainer.Get("OPTION"); var selectedOwner = actor.Owner; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs index 5a41691909..4d5d290638 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/ActorSelectorLogic.cs @@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (tooltip != null) searchTerms.Add(tooltip.Name); - var actorType = modData.Translation.GetString(ActorTypeTooltip, Translation.Arguments("actorType", a.Name)); + var actorType = TranslationProvider.GetString(ActorTypeTooltip, Translation.Arguments("actorType", a.Name)); var tooltipText = tooltip == null ? actorType : tooltip.Name + $"\n{actorType}"; allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), tooltipText)); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/CommonSelectorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/CommonSelectorLogic.cs index 101eaaf42d..088efa780f 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/CommonSelectorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/CommonSelectorLogic.cs @@ -71,10 +71,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic return true; }; - var none = ModData.Translation.GetString(None); - var searchResults = ModData.Translation.GetString(SearchResults); - var all = ModData.Translation.GetString(All); - var multiple = ModData.Translation.GetString(Multiple); + var none = TranslationProvider.GetString(None); + var searchResults = TranslationProvider.GetString(SearchResults); + var all = TranslationProvider.GetString(All); + var multiple = TranslationProvider.GetString(Multiple); var categorySelector = widget.Get("CATEGORIES_DROPDOWN"); categorySelector.GetText = () => diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs index fb22379996..6887a44e06 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs @@ -170,7 +170,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var fileTypes = new Dictionary() { { MapFileType.OraMap, new MapFileTypeInfo { Extension = ".oramap", UiLabel = ".oramap" } }, - { MapFileType.Unpacked, new MapFileTypeInfo { Extension = "", UiLabel = $"({modData.Translation.GetString(Unpacked)})" } } + { MapFileType.Unpacked, new MapFileTypeInfo { Extension = "", UiLabel = $"({TranslationProvider.GetString(Unpacked)})" } } }; var typeDropdown = widget.Get("TYPE_DROPDOWN"); @@ -316,7 +316,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (actionManager != null) actionManager.Modified = false; - TextNotificationsManager.AddTransientLine(modData.Translation.GetString(SaveCurrentMap), world.LocalPlayer); + TextNotificationsManager.AddTransientLine(TranslationProvider.GetString(SaveCurrentMap), world.LocalPlayer); } catch (Exception e) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/GameSaveBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/GameSaveBrowserLogic.cs index 968cc09dc0..5e301fd621 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/GameSaveBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/GameSaveBrowserLogic.cs @@ -301,7 +301,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } catch (Exception ex) { - TextNotificationsManager.Debug(modData.Translation.GetString(SaveDeletionFailed, Translation.Arguments("savePath", savePath))); + TextNotificationsManager.Debug(TranslationProvider.GetString(SaveDeletionFailed, Translation.Arguments("savePath", savePath))); Log.Write("debug", ex.ToString()); return; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoLogic.cs index 95b42e98db..c3f74ab617 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoLogic.cs @@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (tabButton != null) { - tabButton.Text = modData.Translation.GetString(label); + tabButton.Text = TranslationProvider.GetString(label); tabButton.OnClick = () => { if (activePanel == IngameInfoPanel.Chat) diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoObjectivesLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoObjectivesLogic.cs index 9bf3bc33a9..5aa224ef7b 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoObjectivesLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoObjectivesLogic.cs @@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly ContainerWidget template; [ObjectCreator.UseCtor] - public GameInfoObjectivesLogic(Widget widget, World world, ModData modData) + public GameInfoObjectivesLogic(Widget widget, World world) { var player = world.RenderPlayer ?? world.LocalPlayer; @@ -51,9 +51,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic } var missionStatus = widget.Get("MISSION_STATUS"); - var inProgress = modData.Translation.GetString(InProgress); - var accomplished = modData.Translation.GetString(Accomplished); - var failed = modData.Translation.GetString(Failed); + var inProgress = TranslationProvider.GetString(InProgress); + var accomplished = TranslationProvider.GetString(Accomplished); + var failed = TranslationProvider.GetString(Failed); missionStatus.GetText = () => player.WinState == WinState.Undefined ? inProgress : player.WinState == WinState.Won ? accomplished : failed; missionStatus.GetColor = () => player.WinState == WinState.Undefined ? Color.White : diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoStatsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoStatsLogic.cs index e045464f4b..8c0aacffd6 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoStatsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameInfoStatsLogic.cs @@ -79,9 +79,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic checkbox.GetText = () => mo.Objectives[0].Description; } - var failed = modData.Translation.GetString(Failed); - var inProgress = modData.Translation.GetString(InProgress); - var accomplished = modData.Translation.GetString(Accomplished); + var failed = TranslationProvider.GetString(Failed); + var inProgress = TranslationProvider.GetString(InProgress); + var accomplished = TranslationProvider.GetString(Accomplished); statusLabel.GetText = () => player.WinState == WinState.Won ? accomplished : player.WinState == WinState.Lost ? failed : inProgress; statusLabel.GetColor = () => player.WinState == WinState.Won ? Color.LimeGreen : @@ -104,8 +104,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic var teamTemplate = playerPanel.Get("TEAM_TEMPLATE"); var playerTemplate = playerPanel.Get("PLAYER_TEMPLATE"); var spectatorTemplate = playerPanel.Get("SPECTATOR_TEMPLATE"); - var unmuteTooltip = modData.Translation.GetString(Unmute); - var muteTooltip = modData.Translation.GetString(Mute); + var unmuteTooltip = TranslationProvider.GetString(Unmute); + var muteTooltip = TranslationProvider.GetString(Mute); playerPanel.RemoveChildren(); var teams = world.Players.Where(p => !p.NonCombatant && p.Playable) @@ -136,8 +136,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic { var teamHeader = ScrollItemWidget.Setup(teamTemplate, () => false, () => { }); var team = t.Key > 0 - ? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", t.Key)) - : modData.Translation.GetString(NoTeam); + ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", t.Key)) + : TranslationProvider.GetString(NoTeam); teamHeader.Get("TEAM").GetText = () => team; var teamRating = teamHeader.Get("TEAM_SCORE"); var scoreCache = new CachedTransform(s => s.ToString()); @@ -193,7 +193,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (spectators.Count > 0) { var spectatorHeader = ScrollItemWidget.Setup(teamTemplate, () => false, () => { }); - var spectatorTeam = modData.Translation.GetString(Spectators); + var spectatorTeam = TranslationProvider.GetString(Spectators); spectatorHeader.Get("TEAM").GetText = () => spectatorTeam; playerPanel.AddChild(spectatorHeader); @@ -212,7 +212,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic nameLabel.GetText = () => { - var suffix = client.State == Session.ClientState.Disconnected ? $" ({modData.Translation.GetString(Gone)})" : ""; + var suffix = client.State == Session.ClientState.Disconnected ? $" ({TranslationProvider.GetString(Gone)})" : ""; return name.Update((client.Name, suffix)); }; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameTimerLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameTimerLogic.cs index 409bcd5ff7..4f4e00249c 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameTimerLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/GameTimerLogic.cs @@ -43,10 +43,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic bool Paused() => world.Paused || world.ReplayTimestep == 0; - var pausedText = modData.Translation.GetString(GameTimerLogic.Paused); - var maxSpeedText = modData.Translation.GetString(MaxSpeed); + var pausedText = TranslationProvider.GetString(GameTimerLogic.Paused); + var maxSpeedText = TranslationProvider.GetString(MaxSpeed); var speedText = new CachedTransform(p => - modData.Translation.GetString(Speed, Translation.Arguments("percentage", p))); + TranslationProvider.GetString(Speed, Translation.Arguments("percentage", p))); if (timer != null) { @@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } var timerText = new CachedTransform(p => - modData.Translation.GetString(Complete, Translation.Arguments("percentage", p))); + TranslationProvider.GetString(Complete, Translation.Arguments("percentage", p))); if (timer is LabelWithTooltipWidget timerTooltip) { var connection = orderManager.Connection as ReplayConnection; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameCashCounterLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameCashCounterLogic.cs index 155363fa5d..e91110d17e 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameCashCounterLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameCashCounterLogic.cs @@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic displayResources = playerResources.Cash + playerResources.Resources; siloUsageTooltipCache = new CachedTransform<(int Resources, int Capacity), string>(x => - modData.Translation.GetString(SiloUsage, Translation.Arguments("usage", x.Resources, "capacity", x.Capacity))); + TranslationProvider.GetString(SiloUsage, Translation.Arguments("usage", x.Resources, "capacity", x.Capacity))); cashLabel = widget.Get("CASH"); cashLabel.GetTooltipText = () => siloUsageTooltip; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameChatLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameChatLogic.cs index f91f544ad0..88fac61fd7 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameChatLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameChatLogic.cs @@ -70,10 +70,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic var disableTeamChat = alwaysDisabled || (world.LocalPlayer != null && !players.Any(p => p.IsAlliedWith(world.LocalPlayer))); var teamChat = !disableTeamChat; - var teamMessage = modData.Translation.GetString(TeamChat); - var allMessage = modData.Translation.GetString(GeneralChat); + var teamMessage = TranslationProvider.GetString(TeamChat); + var allMessage = TranslationProvider.GetString(GeneralChat); - chatDisabled = modData.Translation.GetString(ChatDisabled); + chatDisabled = TranslationProvider.GetString(ChatDisabled); // Only execute this once, the first time this widget is loaded if (TextNotificationsManager.MutedPlayers.Count == 0) @@ -194,7 +194,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return true; }; - chatAvailableIn = new CachedTransform(x => modData.Translation.GetString(ChatAvailability, Translation.Arguments("seconds", x))); + chatAvailableIn = new CachedTransform(x => TranslationProvider.GetString(ChatAvailability, Translation.Arguments("seconds", x))); if (!isMenuChat) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameMenuLogic.cs index 4103d0e375..e1a76c725b 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameMenuLogic.cs @@ -270,7 +270,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic button.Id = id; button.IsDisabled = () => leaving; - var translation = modData.Translation.GetString(text); + var translation = TranslationProvider.GetString(text); button.GetText = () => translation; buttonContainer.AddChild(button); buttons.Add(button); @@ -284,8 +284,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic return; var button = AddButton("ABORT_MISSION", world.IsGameOver - ? modData.Translation.GetString(Leave) - : modData.Translation.GetString(AbortMission)); + ? TranslationProvider.GetString(Leave) + : TranslationProvider.GetString(AbortMission)); button.OnClick = () => { diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerBarLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerBarLogic.cs index 80f4c022de..f7a03e5f4d 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerBarLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerBarLogic.cs @@ -35,10 +35,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic powerBar.TooltipTextCached = new CachedTransform<(float Current, float Capacity), string>(usage => { var capacity = developerMode.UnlimitedPower ? - modData.Translation.GetString(Infinite) : + TranslationProvider.GetString(Infinite) : powerManager.PowerProvided.ToString(); - return modData.Translation.GetString( + return TranslationProvider.GetString( PowerUsage, Translation.Arguments("usage", usage.Current, "capacity", capacity)); }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerCounterLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerCounterLogic.cs index 36124699d5..ea37211cd5 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerCounterLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngamePowerCounterLogic.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var powerManager = world.LocalPlayer.PlayerActor.Trait(); var power = widget.Get("POWER"); var powerIcon = widget.Get("POWER_ICON"); - var unlimitedCapacity = modData.Translation.GetString(Infinite); + var unlimitedCapacity = TranslationProvider.GetString(Infinite); powerIcon.GetImageName = () => powerManager.ExcessPower < 0 ? "power-critical" : "power-normal"; power.GetColor = () => powerManager.ExcessPower < 0 ? Color.Red : Color.White; @@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var tooltipTextCached = new CachedTransform<(string, string), string>(((string Usage, string Capacity) args) => { - return modData.Translation.GetString( + return TranslationProvider.GetString( PowerUsage, Translation.Arguments("usage", args.Usage, "capacity", args.Capacity)); }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameSiloBarLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameSiloBarLogic.cs index a76263a58f..3f45d17568 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameSiloBarLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/IngameSiloBarLogic.cs @@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic siloBar.GetUsed = () => playerResources.Resources; siloBar.TooltipTextCached = new CachedTransform<(float Current, float Capacity), string>(usage => { - return modData.Translation.GetString( + return TranslationProvider.GetString( SiloUsage, Translation.Arguments("usage", usage.Current, "capacity", usage.Capacity)); }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs index 1e511e5be2..be5a102e55 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs @@ -104,10 +104,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic var groups = new Dictionary>(); - combined = new CameraOption(this, world, modData.Translation.GetString(CameraOptionAllPlayers), world.Players.First(p => p.InternalName == "Everyone")); - disableShroud = new CameraOption(this, world, modData.Translation.GetString(CameraOptionDisableShroud), null); + combined = new CameraOption(this, world, TranslationProvider.GetString(CameraOptionAllPlayers), world.Players.First(p => p.InternalName == "Everyone")); + disableShroud = new CameraOption(this, world, TranslationProvider.GetString(CameraOptionDisableShroud), null); if (!limitViews) - groups.Add(modData.Translation.GetString(CameraOptionOther), new List() { combined, disableShroud }); + groups.Add(TranslationProvider.GetString(CameraOptionOther), new List() { combined, disableShroud }); teams = world.Players.Where(p => !p.NonCombatant && p.Playable) .Select(p => new CameraOption(this, p)) @@ -119,9 +119,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic foreach (var t in teams) { totalPlayers += t.Count(); - var label = noTeams ? modData.Translation.GetString(Players) : t.Key > 0 - ? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", t.Key)) - : modData.Translation.GetString(NoTeam); + var label = noTeams ? TranslationProvider.GetString(Players) : t.Key > 0 + ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", t.Key)) + : TranslationProvider.GetString(NoTeam); groups.Add(label, t); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs index 8f8c8c7521..b05994c9a8 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs @@ -144,10 +144,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic var statsDropDown = widget.Get("STATS_DROPDOWN"); StatsDropDownOption CreateStatsOption(string title, ObserverStatsPanel panel, ScrollItemWidget template, Action a) { - title = modData.Translation.GetString(title); + title = TranslationProvider.GetString(title); return new StatsDropDownOption { - Title = modData.Translation.GetString(title), + Title = TranslationProvider.GetString(title), IsSelected = () => activePanel == panel, OnClick = () => { @@ -168,23 +168,23 @@ namespace OpenRA.Mods.Common.Widgets.Logic { new StatsDropDownOption { - Title = modData.Translation.GetString(InformationNone), + Title = TranslationProvider.GetString(InformationNone), IsSelected = () => activePanel == ObserverStatsPanel.None, OnClick = () => { - var informationNone = modData.Translation.GetString(InformationNone); + var informationNone = TranslationProvider.GetString(InformationNone); statsDropDown.GetText = () => informationNone; playerStatsPanel.Visible = false; ClearStats(); activePanel = ObserverStatsPanel.None; } }, - CreateStatsOption(Basic, ObserverStatsPanel.Basic, basicPlayerTemplate, () => DisplayStats(BasicStats, modData)), - CreateStatsOption(Economy, ObserverStatsPanel.Economy, economyPlayerTemplate, () => DisplayStats(EconomyStats, modData)), - CreateStatsOption(Production, ObserverStatsPanel.Production, productionPlayerTemplate, () => DisplayStats(ProductionStats, modData)), - CreateStatsOption(SupportPowers, ObserverStatsPanel.SupportPowers, supportPowersPlayerTemplate, () => DisplayStats(SupportPowerStats, modData)), - CreateStatsOption(Combat, ObserverStatsPanel.Combat, combatPlayerTemplate, () => DisplayStats(CombatStats, modData)), - CreateStatsOption(Army, ObserverStatsPanel.Army, armyPlayerTemplate, () => DisplayStats(ArmyStats, modData)), + CreateStatsOption(Basic, ObserverStatsPanel.Basic, basicPlayerTemplate, () => DisplayStats(BasicStats)), + CreateStatsOption(Economy, ObserverStatsPanel.Economy, economyPlayerTemplate, () => DisplayStats(EconomyStats)), + CreateStatsOption(Production, ObserverStatsPanel.Production, productionPlayerTemplate, () => DisplayStats(ProductionStats)), + CreateStatsOption(SupportPowers, ObserverStatsPanel.SupportPowers, supportPowersPlayerTemplate, () => DisplayStats(SupportPowerStats)), + CreateStatsOption(Combat, ObserverStatsPanel.Combat, combatPlayerTemplate, () => DisplayStats(CombatStats)), + CreateStatsOption(Army, ObserverStatsPanel.Army, armyPlayerTemplate, () => DisplayStats(ArmyStats)), CreateStatsOption(EarningsGraph, ObserverStatsPanel.Graph, null, () => IncomeGraph()), CreateStatsOption(ArmyGraph, ObserverStatsPanel.ArmyGraph, null, () => ArmyValueGraph()), }; @@ -265,7 +265,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic (p.PlayerActor.TraitOrDefault() ?? new PlayerStatistics(p.PlayerActor)).ArmySamples.Select(s => (float)s))); } - void DisplayStats(Func createItem, ModData modData) + void DisplayStats(Func createItem) { foreach (var team in teams) { @@ -275,8 +275,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic tt.IgnoreMouseOver = true; var teamLabel = tt.Get("TEAM"); - var teamText = team.Key > 0 ? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", team.Key)) - : modData.Translation.GetString(NoTeam); + var teamText = team.Key > 0 ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", team.Key)) + : TranslationProvider.GetString(NoTeam); teamLabel.GetText = () => teamText; tt.Bounds.Width = teamLabel.Bounds.Width = Game.Renderer.Fonts[tt.Font].Measure(teamText).X; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/WorldTooltipLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/WorldTooltipLogic.cs index 3a6a9d096c..73c4783601 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/WorldTooltipLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/WorldTooltipLogic.cs @@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var extraHeightOnDouble = extras.Bounds.Y; var extraHeightOnSingle = extraHeightOnDouble - (doubleHeight - singleHeight); - var unrevealedTerrain = modData.Translation.GetString(UnrevealedTerrain); + var unrevealedTerrain = TranslationProvider.GetString(UnrevealedTerrain); tooltipContainer.BeforeRender = () => { diff --git a/OpenRA.Mods.Common/Widgets/Logic/Installation/DownloadPackageLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Installation/DownloadPackageLogic.cs index 6a7df20a55..4766e56c37 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Installation/DownloadPackageLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Installation/DownloadPackageLogic.cs @@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var status = new CachedTransform(s => WidgetUtils.TruncateText(s, statusLabel.Bounds.Width, statusFont)); statusLabel.GetText = () => status.Update(getStatusText()); - var text = modData.Translation.GetString(Downloading, Translation.Arguments("title", download.Title)); + var text = TranslationProvider.GetString(Downloading, Translation.Arguments("title", download.Title)); panel.Get("TITLE").Text = text; ShowDownloadDialog(); @@ -93,7 +93,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic void ShowDownloadDialog() { - getStatusText = () => modData.Translation.GetString(FetchingMirrorList); + getStatusText = () => TranslationProvider.GetString(FetchingMirrorList); progressBar.Indeterminate = true; var retryButton = panel.Get("RETRY_BUTTON"); @@ -107,7 +107,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var dataTotal = 0.0f; var mag = 0; var dataSuffix = ""; - var host = downloadHost ?? modData.Translation.GetString(UnknownHost); + var host = downloadHost ?? TranslationProvider.GetString(UnknownHost); if (total < 0) { @@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic dataReceived = read / (float)(1L << (mag * 10)); dataSuffix = SizeSuffixes[mag]; - getStatusText = () => modData.Translation.GetString(DownloadingFrom, + getStatusText = () => TranslationProvider.GetString(DownloadingFrom, Translation.Arguments("host", host, "received", $"{dataReceived:0.00}", "suffix", dataSuffix)); progressBar.Indeterminate = true; } @@ -126,7 +126,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic dataReceived = read / (float)(1L << (mag * 10)); dataSuffix = SizeSuffixes[mag]; - getStatusText = () => modData.Translation.GetString(DownloadingFromProgress, + getStatusText = () => TranslationProvider.GetString(DownloadingFromProgress, Translation.Arguments("host", host, "received", $"{dataReceived:0.00}", "total", $"{dataTotal:0.00}", "suffix", dataSuffix, "progress", progressPercentage)); progressBar.Indeterminate = false; @@ -139,7 +139,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic void OnError(string s) => Game.RunAfterTick(() => { - var host = downloadHost ?? modData.Translation.GetString(UnknownHost); + var host = downloadHost ?? TranslationProvider.GetString(UnknownHost); Log.Write("install", $"Download from {host} failed: " + s); progressBar.Indeterminate = false; @@ -183,7 +183,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic // Validate integrity if (!string.IsNullOrEmpty(download.SHA1)) { - getStatusText = () => modData.Translation.GetString(VerifyingArchive); + getStatusText = () => TranslationProvider.GetString(VerifyingArchive); progressBar.Indeterminate = true; var archiveValid = false; @@ -205,13 +205,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (!archiveValid) { - OnError(modData.Translation.GetString(ArchiveValidationFailed)); + OnError(TranslationProvider.GetString(ArchiveValidationFailed)); return; } } // Automatically extract - getStatusText = () => modData.Translation.GetString(Extracting); + getStatusText = () => TranslationProvider.GetString(Extracting); progressBar.Indeterminate = true; var extracted = new List(); @@ -231,7 +231,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic continue; } - OnExtractProgress(modData.Translation.GetString(ExtractingEntry, Translation.Arguments("entry", kv.Value))); + OnExtractProgress(TranslationProvider.GetString(ExtractingEntry, Translation.Arguments("entry", kv.Value))); Log.Write("install", "Extracting " + kv.Value); var targetPath = Platform.ResolvePath(kv.Key); Directory.CreateDirectory(Path.GetDirectoryName(targetPath)); @@ -262,7 +262,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic File.Delete(f); } - OnError(modData.Translation.GetString(ArchiveExtractionFailed)); + OnError(TranslationProvider.GetString(ArchiveExtractionFailed)); } } catch (Exception e) @@ -295,7 +295,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { Log.Write("install", "Mirror selection failed with error:"); Log.Write("install", e.ToString()); - OnError(modData.Translation.GetString(MirrorSelectionFailed)); + OnError(TranslationProvider.GetString(MirrorSelectionFailed)); } }); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Installation/InstallFromSourceLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Installation/InstallFromSourceLogic.cs index 56a5a72151..71b5f88a8b 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Installation/InstallFromSourceLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Installation/InstallFromSourceLogic.cs @@ -159,15 +159,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic void DetectContentSources() { - var message = modData.Translation.GetString(DetectingSources); - ShowProgressbar(modData.Translation.GetString(CheckingSources), () => message); + var message = TranslationProvider.GetString(DetectingSources); + ShowProgressbar(TranslationProvider.GetString(CheckingSources), () => message); ShowBackRetry(DetectContentSources); new Task(() => { foreach (var kv in sources) { - message = modData.Translation.GetString(SearchingSourceFor, Translation.Arguments("title", kv.Value.Title)); + message = TranslationProvider.GetString(SearchingSourceFor, Translation.Arguments("title", kv.Value.Title)); var sourceResolver = kv.Value.ObjectCreator.CreateObject($"{kv.Value.Type.Value}SourceResolver"); @@ -187,7 +187,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { Game.RunAfterTick(() => { - ShowList(kv.Value, modData.Translation.GetString(ContentPackageInstallation)); + ShowList(kv.Value, TranslationProvider.GetString(ContentPackageInstallation)); ShowContinueCancel(() => InstallFromSource(path, kv.Value)); }); @@ -219,14 +219,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic var options = new Dictionary>(); if (gameSources.Any()) - options.Add(modData.Translation.GetString(GameSources), gameSources); + options.Add(TranslationProvider.GetString(GameSources), gameSources); if (digitalInstalls.Any()) - options.Add(modData.Translation.GetString(DigitalInstalls), digitalInstalls); + options.Add(TranslationProvider.GetString(DigitalInstalls), digitalInstalls); Game.RunAfterTick(() => { - ShowList(modData.Translation.GetString(GameContentNotFound), modData.Translation.GetString(AlternativeContentSources), options); + ShowList(TranslationProvider.GetString(GameContentNotFound), TranslationProvider.GetString(AlternativeContentSources), options); ShowBackRetry(DetectContentSources); }); }).Start(); @@ -235,7 +235,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic void InstallFromSource(string path, ModContent.ModSource modSource) { var message = ""; - ShowProgressbar(modData.Translation.GetString(InstallingContent), () => message); + ShowProgressbar(TranslationProvider.GetString(InstallingContent), () => message); ShowDisabledCancel(); new Task(() => @@ -286,7 +286,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Game.RunAfterTick(() => { - ShowMessage(modData.Translation.GetString(InstallationFailed), modData.Translation.GetString(CheckInstallLog)); + ShowMessage(TranslationProvider.GetString(InstallationFailed), TranslationProvider.GetString(CheckInstallLog)); ShowBackRetry(() => InstallFromSource(path, modSource)); }); } @@ -391,11 +391,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic void ShowContinueCancel(Action continueAction) { primaryButton.OnClick = continueAction; - primaryButton.Text = modData.Translation.GetString(Continue); + primaryButton.Text = TranslationProvider.GetString(Continue); primaryButton.Visible = true; secondaryButton.OnClick = Ui.CloseWindow; - secondaryButton.Text = modData.Translation.GetString(Cancel); + secondaryButton.Text = TranslationProvider.GetString(Cancel); secondaryButton.Visible = true; secondaryButton.Disabled = false; Game.RunAfterTick(Ui.ResetTooltips); @@ -404,11 +404,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic void ShowBackRetry(Action retryAction) { primaryButton.OnClick = retryAction; - primaryButton.Text = modData.Translation.GetString(Retry); + primaryButton.Text = TranslationProvider.GetString(Retry); primaryButton.Visible = true; secondaryButton.OnClick = Ui.CloseWindow; - secondaryButton.Text = modData.Translation.GetString(Back); + secondaryButton.Text = TranslationProvider.GetString(Back); secondaryButton.Visible = true; secondaryButton.Disabled = false; Game.RunAfterTick(Ui.ResetTooltips); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentLogic.cs index b2b941c845..83fe274687 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentLogic.cs @@ -23,7 +23,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic [TranslationReference] const string ManualInstall = "button-manual-install"; - readonly ModData modData; readonly ModContent content; readonly ScrollPanelWidget scrollPanel; readonly Widget template; @@ -34,9 +33,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic bool sourceAvailable; [ObjectCreator.UseCtor] - public ModContentLogic(ModData modData, Widget widget, Manifest mod, ModContent content, Action onCancel) + public ModContentLogic(Widget widget, Manifest mod, ModContent content, Action onCancel) { - this.modData = modData; this.content = content; var panel = widget.Get("CONTENT_PANEL"); @@ -143,7 +141,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic requiresSourceWidget.IsVisible = () => !installed && !downloadEnabled; if (!isSourceAvailable) { - var manualInstall = modData.Translation.GetString(ManualInstall); + var manualInstall = TranslationProvider.GetString(ManualInstall); requiresSourceWidget.GetText = () => manualInstall; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentPromptLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentPromptLogic.cs index 95c6fbe09f..9fcdbebcca 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentPromptLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Installation/ModContentPromptLogic.cs @@ -35,8 +35,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic this.content = content; CheckRequiredContentInstalled(); - var continueMessage = modData.Translation.GetString(Continue); - var quitMessage = modData.Translation.GetString(Quit); + var continueMessage = TranslationProvider.GetString(Continue); + var quitMessage = TranslationProvider.GetString(Quit); var panel = widget.Get("CONTENT_PROMPT_PANEL"); var headerTemplate = panel.Get("HEADER_TEMPLATE"); diff --git a/OpenRA.Mods.Common/Widgets/Logic/IntroductionPromptLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/IntroductionPromptLogic.cs index dbdd120894..fb2777cf7c 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/IntroductionPromptLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/IntroductionPromptLogic.cs @@ -42,8 +42,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic var ds = Game.Settings.Graphics; var gs = Game.Settings.Game; - classic = modData.Translation.GetString(Classic); - modern = modData.Translation.GetString(Modern); + classic = TranslationProvider.GetString(Classic); + modern = TranslationProvider.GetString(Modern); var escPressed = false; var nameTextfield = widget.Get("PLAYERNAME"); @@ -83,7 +83,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic mouseControlDescModern.IsVisible = () => !gs.UseClassicMouseStyle; var mouseControlDropdown = widget.Get("MOUSE_CONTROL_DROPDOWN"); - mouseControlDropdown.OnMouseDown = _ => InputSettingsLogic.ShowMouseControlDropdown(modData, mouseControlDropdown, gs); + mouseControlDropdown.OnMouseDown = _ => InputSettingsLogic.ShowMouseControlDropdown(mouseControlDropdown, gs); mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern; foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern }) diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickClientLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickClientLogic.cs index f485f5fb6f..2515b5b4bd 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickClientLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickClientLogic.cs @@ -20,9 +20,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic const string KickClient = "dialog-kick-client.prompt"; [ObjectCreator.UseCtor] - public KickClientLogic(ModData modData, Widget widget, string clientName, Action okPressed, Action cancelPressed) + public KickClientLogic(Widget widget, string clientName, Action okPressed, Action cancelPressed) { - var kickMessage = modData.Translation.GetString(KickClient, Translation.Arguments("player", clientName)); + var kickMessage = TranslationProvider.GetString(KickClient, Translation.Arguments("player", clientName)); widget.Get("TITLE").GetText = () => kickMessage; var tempBan = false; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickSpectatorsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickSpectatorsLogic.cs index 30622bbeb1..18a8e31ea6 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickSpectatorsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/KickSpectatorsLogic.cs @@ -20,9 +20,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic const string KickSpectators = "dialog-kick-spectators.prompt"; [ObjectCreator.UseCtor] - public KickSpectatorsLogic(ModData modData, Widget widget, int clientCount, Action okPressed, Action cancelPressed) + public KickSpectatorsLogic(Widget widget, int clientCount, Action okPressed, Action cancelPressed) { - var kickMessage = modData.Translation.GetString(KickSpectators, Translation.Arguments("count", clientCount)); + var kickMessage = TranslationProvider.GetString(KickSpectators, Translation.Arguments("count", clientCount)); widget.Get("TEXT").GetText = () => kickMessage; widget.Get("OK_BUTTON").OnClick = () => diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs index 09cd8ae1f6..4715faf206 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyLogic.cs @@ -261,7 +261,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { new DropDownOption() { - Title = modData.Translation.GetString(Add), + Title = TranslationProvider.GetString(Add), IsSelected = () => false, OnClick = () => { @@ -280,7 +280,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { botOptions.Add(new DropDownOption() { - Title = modData.Translation.GetString(Remove), + Title = TranslationProvider.GetString(Remove), IsSelected = () => false, OnClick = () => { @@ -294,7 +294,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic }); } - options.Add(modData.Translation.GetString(ConfigureBots), botOptions); + options.Add(TranslationProvider.GetString(ConfigureBots), botOptions); } var teamCount = (orderManager.LobbyInfo.Slots.Count(s => !s.Value.LockTeam && orderManager.LobbyInfo.ClientInSlot(s.Key) != null) + 1) / 2; @@ -302,7 +302,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { var teamOptions = Enumerable.Range(2, teamCount - 1).Reverse().Select(d => new DropDownOption { - Title = modData.Translation.GetString(NumberTeams, Translation.Arguments("count", d)), + Title = TranslationProvider.GetString(NumberTeams, Translation.Arguments("count", d)), IsSelected = () => false, OnClick = () => orderManager.IssueOrder(Order.Command($"assignteams {d}")) }).ToList(); @@ -311,7 +311,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { teamOptions.Add(new DropDownOption { - Title = modData.Translation.GetString(HumanVsBots), + Title = TranslationProvider.GetString(HumanVsBots), IsSelected = () => false, OnClick = () => orderManager.IssueOrder(Order.Command("assignteams 1")) }); @@ -319,12 +319,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic teamOptions.Add(new DropDownOption { - Title = modData.Translation.GetString(FreeForAll), + Title = TranslationProvider.GetString(FreeForAll), IsSelected = () => false, OnClick = () => orderManager.IssueOrder(Order.Command("assignteams 0")) }); - options.Add(modData.Translation.GetString(ConfigureTeams), teamOptions); + options.Add(TranslationProvider.GetString(ConfigureTeams), teamOptions); } ScrollItemWidget SetupItem(DropDownOption option, ScrollItemWidget template) @@ -443,7 +443,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic disconnectButton.OnClick = () => { Ui.CloseWindow(); onExit(); }; if (skirmishMode) - disconnectButton.Text = modData.Translation.GetString(Back); + disconnectButton.Text = TranslationProvider.GetString(Back); if (logicArgs.TryGetValue("ChatTemplates", out var templateIds)) { @@ -455,8 +455,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic } var chatMode = lobby.Get("CHAT_MODE"); - var team = modData.Translation.GetString(TeamChat); - var all = modData.Translation.GetString(GeneralChat); + var team = TranslationProvider.GetString(TeamChat); + var all = TranslationProvider.GetString(GeneralChat); chatMode.GetText = () => teamChat ? team : all; chatMode.OnClick = () => teamChat ^= true; chatMode.IsDisabled = () => disableTeamChat || !chatEnabled; @@ -497,8 +497,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic chatTextField.OnEscKey = _ => chatTextField.YieldKeyboardFocus(); - chatAvailableIn = new CachedTransform(x => modData.Translation.GetString(ChatAvailability, Translation.Arguments("seconds", x))); - chatDisabled = modData.Translation.GetString(ChatDisabled); + chatAvailableIn = new CachedTransform(x => TranslationProvider.GetString(ChatAvailability, Translation.Arguments("seconds", x))); + chatDisabled = TranslationProvider.GetString(ChatDisabled); lobbyChatPanel = lobby.Get("CHAT_DISPLAY"); lobbyChatPanel.RemoveChildren(); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs index bea3ecf6e9..e56e9ef1d1 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyOptionsLogic.cs @@ -23,7 +23,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic [TranslationReference] const string NotAvailable = "label-not-available"; - readonly ModData modData; readonly ScrollPanelWidget panel; readonly Widget optionsContainer; readonly Widget checkboxRowTemplate; @@ -36,9 +35,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic MapPreview mapPreview; [ObjectCreator.UseCtor] - internal LobbyOptionsLogic(ModData modData, Widget widget, OrderManager orderManager, Func getMap, Func configurationDisabled) + internal LobbyOptionsLogic(Widget widget, OrderManager orderManager, Func getMap, Func configurationDisabled) { - this.modData = modData; this.getMap = getMap; this.orderManager = orderManager; this.configurationDisabled = configurationDisabled; @@ -143,7 +141,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var getOptionLabel = new CachedTransform(id => { if (id == null || !option.Values.TryGetValue(id, out var value)) - return modData.Translation.GetString(NotAvailable); + return TranslationProvider.GetString(NotAvailable); return value; }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs index 2364174fd6..3a48d95835 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/LobbyUtils.cs @@ -55,12 +55,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic public static void ShowSlotDropDown(DropDownButtonWidget dropdown, Session.Slot slot, Session.Client client, OrderManager orderManager, MapPreview map, ModData modData) { - var open = modData.Translation.GetString(Open); - var closed = modData.Translation.GetString(Closed); + var open = TranslationProvider.GetString(Open); + var closed = TranslationProvider.GetString(Closed); var options = new Dictionary> { { - modData.Translation.GetString(Slot), new List + TranslationProvider.GetString(Slot), new List { new SlotDropDownOption(open, "slot_open " + slot.PlayerReference, () => !slot.Closed && client == null), new SlotDropDownOption(closed, "slot_close " + slot.PlayerReference, () => slot.Closed) @@ -80,7 +80,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } } - options.Add(bots.Count > 0 ? modData.Translation.GetString(Bots) : modData.Translation.GetString(BotsDisabled), bots); + options.Add(bots.Count > 0 ? TranslationProvider.GetString(Bots) : TranslationProvider.GetString(BotsDisabled), bots); ScrollItemWidget SetupItem(SlotDropDownOption o, ScrollItemWidget itemTemplate) { @@ -438,8 +438,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic WidgetUtils.TruncateText(name, slot.Bounds.Width - slot.Bounds.Height - slot.LeftMargin - slot.RightMargin, Game.Renderer.Fonts[slot.Font])); - var closed = modData.Translation.GetString(Closed); - var open = modData.Translation.GetString(Open); + var closed = TranslationProvider.GetString(Closed); + var open = TranslationProvider.GetString(Open); slot.GetText = () => truncated.Update(c != null ? c.Name : s.Closed ? closed : open); slot.OnMouseDown = _ => ShowSlotDropDown(slot, s, c, orderManager, map, modData); @@ -452,8 +452,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic var name = parent.Get("NAME"); name.IsVisible = () => true; name.GetText = () => c != null ? c.Name : s.Closed - ? modData.Translation.GetString(Closed) - : modData.Translation.GetString(Open); + ? TranslationProvider.GetString(Closed) + : TranslationProvider.GetString(Open); // Ensure Slot selector (if present) is hidden HideChildWidget(parent, "SLOT_OPTIONS"); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/MapPreviewLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/MapPreviewLogic.cs index 3e61d767a5..24ca91f421 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/MapPreviewLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/MapPreviewLogic.cs @@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return map.Status == MapStatus.Available && isPlayable; }; - SetupWidgets(available, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); + SetupWidgets(available, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); } var invalid = widget.GetOrNull("MAP_INVALID"); @@ -70,7 +70,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return map.Status == MapStatus.Available && (serverStatus & Session.MapStatus.Incompatible) != 0; }; - SetupWidgets(invalid, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); + SetupWidgets(invalid, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); } var validating = widget.GetOrNull("MAP_VALIDATING"); @@ -82,7 +82,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return map.Status == MapStatus.Available && (serverStatus & Session.MapStatus.Validating) != 0; }; - SetupWidgets(validating, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); + SetupWidgets(validating, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); } var download = widget.GetOrNull("MAP_DOWNLOADABLE"); @@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { download.IsVisible = () => getMap().Map.Status == MapStatus.DownloadAvailable; - SetupWidgets(download, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); + SetupWidgets(download, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); var install = download.GetOrNull("MAP_INSTALL"); if (install != null) @@ -117,7 +117,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return map.Status != MapStatus.Available && map.Status != MapStatus.DownloadAvailable; }; - SetupWidgets(progress, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); + SetupWidgets(progress, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints); var statusSearching = progress.GetOrNull("MAP_STATUS_SEARCHING"); if (statusSearching != null) @@ -152,13 +152,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic { var (map, _) = getMap(); if (map.DownloadBytes == 0) - return modData.Translation.GetString(Connecting); + return TranslationProvider.GetString(Connecting); // Server does not provide the total file length if (map.DownloadPercentage == 0) - modData.Translation.GetString(Downloading, Translation.Arguments("size", map.DownloadBytes / 1024)); + TranslationProvider.GetString(Downloading, Translation.Arguments("size", map.DownloadBytes / 1024)); - return modData.Translation.GetString(DownloadingPercentage, Translation.Arguments("size", map.DownloadBytes / 1024, "progress", map.DownloadPercentage)); + return TranslationProvider.GetString(DownloadingPercentage, Translation.Arguments("size", map.DownloadBytes / 1024, "progress", map.DownloadPercentage)); }; } @@ -188,8 +188,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic }; retry.GetText = () => getMap().Map.Status == MapStatus.DownloadError - ? modData.Translation.GetString(RetryInstall) - : modData.Translation.GetString(RetrySearch); + ? TranslationProvider.GetString(RetryInstall) + : TranslationProvider.GetString(RetrySearch); } var progressbar = progress.GetOrNull("MAP_PROGRESSBAR"); @@ -211,7 +211,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } } - static void SetupWidgets(Widget parent, ModData modData, + static void SetupWidgets(Widget parent, Func<(MapPreview Map, Session.MapStatus Status)> getMap, Action onMouseDown, Func> getSpawnOccupants, @@ -256,7 +256,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { var font = Game.Renderer.Fonts[authorLabel.Font]; var author = new CachedTransform( - m => WidgetUtils.TruncateText(modData.Translation.GetString(CreatedBy, Translation.Arguments("author", m.Author)), authorLabel.Bounds.Width, font)); + m => WidgetUtils.TruncateText(TranslationProvider.GetString(CreatedBy, Translation.Arguments("author", m.Author)), authorLabel.Bounds.Width, font)); authorLabel.GetText = () => author.Update(getMap().Map); } } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Lobby/SpawnSelectorTooltipLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Lobby/SpawnSelectorTooltipLogic.cs index a7169c02b2..cdaca3a1cb 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Lobby/SpawnSelectorTooltipLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Lobby/SpawnSelectorTooltipLogic.cs @@ -47,9 +47,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic var labelText = ""; string playerFaction = null; var playerTeam = -1; - teamMessage = new CachedTransform(t => modData.Translation.GetString(TeamNumber, Translation.Arguments("team", t))); - var disabledSpawn = modData.Translation.GetString(DisabledSpawn); - var availableSpawn = modData.Translation.GetString(AvailableSpawn); + teamMessage = new CachedTransform(t => TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", t))); + var disabledSpawn = TranslationProvider.GetString(DisabledSpawn); + var availableSpawn = TranslationProvider.GetString(AvailableSpawn); tooltipContainer.BeforeRender = () => { diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index 9b7e5a5aa7..ecd2edcab6 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -221,7 +221,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic newsPanel.RemoveChild(newsTemplate); newsStatus = newsPanel.Get("NEWS_STATUS"); - SetNewsStatus(modData.Translation.GetString(LoadingNews)); + SetNewsStatus(TranslationProvider.GetString(LoadingNews)); } Game.OnRemoteDirectConnect += OnRemoteDirectConnect; @@ -333,7 +333,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic catch (Exception e) { Game.RunAfterTick(() => // run on the main thread - SetNewsStatus(modData.Translation.GetString(NewsRetrivalFailed, Translation.Arguments("message", e.Message)))); + SetNewsStatus(TranslationProvider.GetString(NewsRetrivalFailed, Translation.Arguments("message", e.Message)))); } }); } @@ -404,7 +404,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } catch (Exception ex) { - SetNewsStatus(modData.Translation.GetString(NewsParsingFailed, Translation.Arguments("message", ex.Message))); + SetNewsStatus(TranslationProvider.GetString(NewsParsingFailed, Translation.Arguments("message", ex.Message))); } return null; diff --git a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs index 8413c1ddca..ff5165d2c9 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MapChooserLogic.cs @@ -100,9 +100,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic this.modData = modData; this.onSelect = onSelect; - allMaps = modData.Translation.GetString(AllMaps); - orderByPlayer = modData.Translation.GetString(OrderMapsByPlayers); - orderByDate = modData.Translation.GetString(OrderMapsByDate); + allMaps = TranslationProvider.GetString(AllMaps); + orderByPlayer = TranslationProvider.GetString(OrderMapsByPlayers); + orderByDate = TranslationProvider.GetString(OrderMapsByDate); var approving = new Action(() => { @@ -273,7 +273,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { var item = categories.FirstOrDefault(m => m.Category == category); if (item == default((string, int))) - item.Category = modData.Translation.GetString(NoMatches); + item.Category = TranslationProvider.GetString(NoMatches); return ShowItem(item); }; @@ -363,23 +363,23 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (type != null) details = type + " "; - details += modData.Translation.GetString(Players, Translation.Arguments("players", preview.PlayerCount)); + details += TranslationProvider.GetString(Players, Translation.Arguments("players", preview.PlayerCount)); detailsWidget.GetText = () => details; } var authorWidget = item.GetOrNull("AUTHOR"); if (authorWidget != null && !string.IsNullOrEmpty(preview.Author)) - WidgetUtils.TruncateLabelToTooltip(authorWidget, modData.Translation.GetString(CreatedBy, Translation.Arguments("author", preview.Author))); + WidgetUtils.TruncateLabelToTooltip(authorWidget, TranslationProvider.GetString(CreatedBy, Translation.Arguments("author", preview.Author))); var sizeWidget = item.GetOrNull("SIZE"); if (sizeWidget != null) { var size = preview.Bounds.Width + "x" + preview.Bounds.Height; var numberPlayableCells = preview.Bounds.Width * preview.Bounds.Height; - if (numberPlayableCells >= 120 * 120) size += " " + modData.Translation.GetString(MapSizeHuge); - else if (numberPlayableCells >= 90 * 90) size += " " + modData.Translation.GetString(MapSizeLarge); - else if (numberPlayableCells >= 60 * 60) size += " " + modData.Translation.GetString(MapSizeMedium); - else size += " " + modData.Translation.GetString(MapSizeSmall); + if (numberPlayableCells >= 120 * 120) size += " " + TranslationProvider.GetString(MapSizeHuge); + else if (numberPlayableCells >= 90 * 90) size += " " + TranslationProvider.GetString(MapSizeLarge); + else if (numberPlayableCells >= 60 * 60) size += " " + TranslationProvider.GetString(MapSizeMedium); + else size += " " + TranslationProvider.GetString(MapSizeSmall); sizeWidget.GetText = () => size; } @@ -407,7 +407,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } catch (Exception ex) { - TextNotificationsManager.Debug(modData.Translation.GetString(MapDeletionFailed, Translation.Arguments("map", map))); + TextNotificationsManager.Debug(TranslationProvider.GetString(MapDeletionFailed, Translation.Arguments("map", map))); Log.Write("debug", ex.ToString()); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs index 559fbac833..8fdcd83452 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MissionBrowserLogic.cs @@ -314,13 +314,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic var speeds = modData.Manifest.Get().Speeds; gameSpeed = "default"; - var speedText = new CachedTransform(s => modData.Translation.GetString(speeds[s].Name)); + var speedText = new CachedTransform(s => TranslationProvider.GetString(speeds[s].Name)); gameSpeedButton.GetText = () => speedText.Update(gameSpeed); gameSpeedButton.OnMouseDown = _ => { var options = speeds.Select(s => new DropDownOption { - Title = modData.Translation.GetString(s.Value.Name), + Title = TranslationProvider.GetString(s.Value.Name), IsSelected = () => gameSpeed == s.Key, OnClick = () => gameSpeed = s.Key }); diff --git a/OpenRA.Mods.Common/Widgets/Logic/MusicPlayerLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MusicPlayerLogic.cs index d31f54e727..facd52fca1 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MusicPlayerLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MusicPlayerLogic.cs @@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic panel.Get("MUTE_LABEL").GetText = () => { if (Game.Settings.Sound.Mute) - return modData.Translation.GetString(SoundMuted); + return TranslationProvider.GetString(SoundMuted); return ""; }; @@ -101,7 +101,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return $"{minutes:D2}:{seconds:D2} / {totalMinutes:D2}:{totalSeconds:D2}"; }; - var noSongPlaying = modData.Translation.GetString(NoSongPlaying); + var noSongPlaying = TranslationProvider.GetString(NoSongPlaying); var musicTitle = panel.GetOrNull("TITLE_LABEL"); if (musicTitle != null) musicTitle.GetText = () => currentSong != null ? currentSong.Title : noSongPlaying; diff --git a/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs index b316d4b95f..6a9a1e6277 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs @@ -24,14 +24,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic [TranslationReference] const string AudioUnmuted = "label-audio-unmuted"; - readonly ModData modData; - [ObjectCreator.UseCtor] public MuteHotkeyLogic(Widget widget, ModData modData, Dictionary logicArgs) - : base(widget, modData, "MuteAudioKey", "GLOBAL_KEYHANDLER", logicArgs) - { - this.modData = modData; - } + : base(widget, modData, "MuteAudioKey", "GLOBAL_KEYHANDLER", logicArgs) { } protected override bool OnHotkeyActivated(KeyInput e) { @@ -40,12 +35,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (Game.Settings.Sound.Mute) { Game.Sound.MuteAudio(); - TextNotificationsManager.AddFeedbackLine(modData.Translation.GetString(AudioMuted)); + TextNotificationsManager.AddFeedbackLine(TranslationProvider.GetString(AudioMuted)); } else { Game.Sound.UnmuteAudio(); - TextNotificationsManager.AddFeedbackLine(modData.Translation.GetString(AudioUnmuted)); + TextNotificationsManager.AddFeedbackLine(TranslationProvider.GetString(AudioUnmuted)); } return true; diff --git a/OpenRA.Mods.Common/Widgets/Logic/PlayerProfileLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/PlayerProfileLogic.cs index 1fa7907315..2e92f4e230 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/PlayerProfileLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/PlayerProfileLogic.cs @@ -160,7 +160,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var profileWidth = 0; var maxProfileWidth = widget.Bounds.Width; - var messageText = modData.Translation.GetString(LoadingPlayerProfile); + var messageText = TranslationProvider.GetString(LoadingPlayerProfile); var messageWidth = messageFont.Measure(messageText).X + 2 * message.Bounds.Left; Task.Run(async () => @@ -249,7 +249,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic { if (profile == null) { - messageText = modData.Translation.GetString(LoadingPlayerProfileFailed); + messageText = TranslationProvider.GetString(LoadingPlayerProfileFailed); messageWidth = messageFont.Measure(messageText).X + 2 * message.Bounds.Left; header.Bounds.Width = widget.Bounds.Width = messageWidth; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/ReplayBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ReplayBrowserLogic.cs index 9ab1c08fd4..f5ece9bd8c 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ReplayBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ReplayBrowserLogic.cs @@ -179,7 +179,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic }); var replayDuration = new CachedTransform(r => - modData.Translation.GetString(Duration, Translation.Arguments("time", WidgetUtils.FormatTimeSeconds((int)selectedReplay.GameInfo.Duration.TotalSeconds)))); + TranslationProvider.GetString(Duration, Translation.Arguments("time", WidgetUtils.FormatTimeSeconds((int)selectedReplay.GameInfo.Duration.TotalSeconds)))); panel.Get("DURATION").GetText = () => replayDuration.Update(selectedReplay); SetupFilters(); @@ -231,8 +231,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic var options = new List<(GameType GameType, string Text)> { (GameType.Any, ddb.GetText()), - (GameType.Singleplayer, modData.Translation.GetString(Singleplayer)), - (GameType.Multiplayer, modData.Translation.GetString(Multiplayer)) + (GameType.Singleplayer, TranslationProvider.GetString(Singleplayer)), + (GameType.Multiplayer, TranslationProvider.GetString(Multiplayer)) }; var lookup = options.ToDictionary(kvp => kvp.GameType, kvp => kvp.Text); @@ -264,10 +264,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic var options = new List<(DateType DateType, string Text)> { (DateType.Any, ddb.GetText()), - (DateType.Today, modData.Translation.GetString(Today)), - (DateType.LastWeek, modData.Translation.GetString(LastWeek)), - (DateType.LastFortnight, modData.Translation.GetString(LastFortnight)), - (DateType.LastMonth, modData.Translation.GetString(LastMonth)) + (DateType.Today, TranslationProvider.GetString(Today)), + (DateType.LastWeek, TranslationProvider.GetString(LastWeek)), + (DateType.LastFortnight, TranslationProvider.GetString(LastFortnight)), + (DateType.LastMonth, TranslationProvider.GetString(LastMonth)) }; var lookup = options.ToDictionary(kvp => kvp.DateType, kvp => kvp.Text); @@ -300,10 +300,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic var options = new List<(DurationType DurationType, string Text)> { (DurationType.Any, ddb.GetText()), - (DurationType.VeryShort, modData.Translation.GetString(ReplayDurationVeryShort)), - (DurationType.Short, modData.Translation.GetString(ReplayDurationShort)), - (DurationType.Medium, modData.Translation.GetString(ReplayDurationMedium)), - (DurationType.Long, modData.Translation.GetString(ReplayDurationLong)) + (DurationType.VeryShort, TranslationProvider.GetString(ReplayDurationVeryShort)), + (DurationType.Short, TranslationProvider.GetString(ReplayDurationShort)), + (DurationType.Medium, TranslationProvider.GetString(ReplayDurationMedium)), + (DurationType.Long, TranslationProvider.GetString(ReplayDurationLong)) }; var lookup = options.ToDictionary(kvp => kvp.DurationType, kvp => kvp.Text); @@ -337,8 +337,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic var options = new List<(WinState WinState, string Text)> { (WinState.Undefined, ddb.GetText()), - (WinState.Lost, modData.Translation.GetString(Defeat)), - (WinState.Won, modData.Translation.GetString(Victory)) + (WinState.Lost, TranslationProvider.GetString(Defeat)), + (WinState.Won, TranslationProvider.GetString(Victory)) }; var lookup = options.ToDictionary(kvp => kvp.WinState, kvp => kvp.Text); @@ -580,7 +580,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic } catch (Exception ex) { - TextNotificationsManager.Debug(modData.Translation.GetString(ReplayDeletionFailed, Translation.Arguments("file", replay.FilePath))); + TextNotificationsManager.Debug(TranslationProvider.GetString(ReplayDeletionFailed, Translation.Arguments("file", replay.FilePath))); Log.Write("debug", ex.ToString()); return; } @@ -716,9 +716,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic var noTeams = players.Count() == 1; foreach (var p in players) { - var label = noTeams ? modData.Translation.GetString(Players) : p.Key > 0 - ? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", p.Key)) - : modData.Translation.GetString(NoTeam); + var label = noTeams ? TranslationProvider.GetString(Players) : p.Key > 0 + ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", p.Key)) + : TranslationProvider.GetString(NoTeam); teams.Add(label, p); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs index 7861e1085c..6c6957c819 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs @@ -189,13 +189,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (advertiseOnline) { - noticesLabelA.Text = modData.Translation.GetString(InternetServerNatA) + " "; + noticesLabelA.Text = TranslationProvider.GetString(InternetServerNatA) + " "; var aWidth = Game.Renderer.Fonts[noticesLabelA.Font].Measure(noticesLabelA.Text).X; noticesLabelA.Bounds.Width = aWidth; - noticesLabelB.Text = Nat.Status == NatStatus.Enabled ? modData.Translation.GetString(InternetServerNatBenabled) : - Nat.Status == NatStatus.NotSupported ? modData.Translation.GetString(InternetServerNatBnotSupported) - : modData.Translation.GetString(InternetServerNatBdisabled); + noticesLabelB.Text = Nat.Status == NatStatus.Enabled ? TranslationProvider.GetString(InternetServerNatBenabled) : + Nat.Status == NatStatus.NotSupported ? TranslationProvider.GetString(InternetServerNatBnotSupported) + : TranslationProvider.GetString(InternetServerNatBdisabled); noticesLabelB.TextColor = Nat.Status == NatStatus.Enabled ? ChromeMetrics.Get("NoticeSuccessColor") : Nat.Status == NatStatus.NotSupported ? ChromeMetrics.Get("NoticeErrorColor") : @@ -206,13 +206,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic noticesLabelB.Bounds.Width = bWidth; noticesLabelB.Visible = true; - noticesLabelC.Text = modData.Translation.GetString(InternetServerNatC); + noticesLabelC.Text = TranslationProvider.GetString(InternetServerNatC); noticesLabelC.Bounds.X = noticesLabelB.Bounds.Right; noticesLabelC.Visible = true; } else { - noticesLabelA.Text = modData.Translation.GetString(LocalServer); + noticesLabelA.Text = TranslationProvider.GetString(LocalServer); noticesLabelB.Visible = false; noticesLabelC.Visible = false; } @@ -248,13 +248,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic } catch (System.Net.Sockets.SocketException e) { - var message = modData.Translation.GetString(ServerCreationFailedPrompt, Translation.Arguments("port", Game.Settings.Server.ListenPort)); + var message = TranslationProvider.GetString(ServerCreationFailedPrompt, Translation.Arguments("port", Game.Settings.Server.ListenPort)); // AddressAlreadyInUse (WSAEADDRINUSE) if (e.ErrorCode == 10048) - message += "\n" + modData.Translation.GetString(ServerCreationFailedPortUsed); + message += "\n" + TranslationProvider.GetString(ServerCreationFailedPortUsed); else - message += $"\n" + modData.Translation.GetString(ServerCreationFailedError, + message += $"\n" + TranslationProvider.GetString(ServerCreationFailedError, Translation.Arguments("message", e.Message, "code", e.ErrorCode)); ConfirmationDialogs.ButtonPrompt(modData, ServerCreationFailedTitle, message, diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerListLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ServerListLogic.cs index 119bdeb5fe..b1daa1106f 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ServerListLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ServerListLogic.cs @@ -145,8 +145,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic { switch (searchStatus) { - case SearchStatus.Failed: return modData.Translation.GetString(SearchStatusFailed); - case SearchStatus.NoGames: return modData.Translation.GetString(SearchStatusNoGames); + case SearchStatus.Failed: return TranslationProvider.GetString(SearchStatusFailed); + case SearchStatus.NoGames: return TranslationProvider.GetString(SearchStatusNoGames); default: return ""; } } @@ -157,22 +157,22 @@ namespace OpenRA.Mods.Common.Widgets.Logic this.modData = modData; this.onJoin = onJoin; - playing = modData.Translation.GetString(Playing); - waiting = modData.Translation.GetString(Waiting); + playing = TranslationProvider.GetString(Playing); + waiting = TranslationProvider.GetString(Waiting); - noServerSelected = modData.Translation.GetString(NoServerSelected); - mapStatusSearching = modData.Translation.GetString(MapStatusSearching); - mapClassificationUnknown = modData.Translation.GetString(MapClassificationUnknown); + noServerSelected = TranslationProvider.GetString(NoServerSelected); + mapStatusSearching = TranslationProvider.GetString(MapStatusSearching); + mapClassificationUnknown = TranslationProvider.GetString(MapClassificationUnknown); - players = new CachedTransform(i => modData.Translation.GetString(PlayersLabel, Translation.Arguments("players", i))); - bots = new CachedTransform(i => modData.Translation.GetString(BotsLabel, Translation.Arguments("bots", i))); - spectators = new CachedTransform(i => modData.Translation.GetString(SpectatorsLabel, Translation.Arguments("spectators", i))); + players = new CachedTransform(i => TranslationProvider.GetString(PlayersLabel, Translation.Arguments("players", i))); + bots = new CachedTransform(i => TranslationProvider.GetString(BotsLabel, Translation.Arguments("bots", i))); + spectators = new CachedTransform(i => TranslationProvider.GetString(SpectatorsLabel, Translation.Arguments("spectators", i))); - minutes = new CachedTransform(i => modData.Translation.GetString(InProgress, Translation.Arguments("minutes", i))); - passwordProtected = modData.Translation.GetString(PasswordProtected); - waitingForPlayers = modData.Translation.GetString(WaitingForPlayers); - serverShuttingDown = modData.Translation.GetString(ServerShuttingDown); - unknownServerState = modData.Translation.GetString(UnknownServerState); + minutes = new CachedTransform(i => TranslationProvider.GetString(InProgress, Translation.Arguments("minutes", i))); + passwordProtected = TranslationProvider.GetString(PasswordProtected); + waitingForPlayers = TranslationProvider.GetString(WaitingForPlayers); + serverShuttingDown = TranslationProvider.GetString(ServerShuttingDown); + unknownServerState = TranslationProvider.GetString(UnknownServerState); services = modData.Manifest.Get(); @@ -318,7 +318,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var playersLabel = widget.GetOrNull("PLAYER_COUNT"); if (playersLabel != null) { - var playersText = new CachedTransform(p => modData.Translation.GetString(PlayersOnline, Translation.Arguments("players", p))); + var playersText = new CachedTransform(p => TranslationProvider.GetString(PlayersOnline, Translation.Arguments("players", p))); playersLabel.IsVisible = () => playerCount != 0; playersLabel.GetText = () => playersText.Update(playerCount); } @@ -578,14 +578,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic var noTeams = players.Count() == 1; foreach (var p in players) { - var label = noTeams ? modData.Translation.GetString(Players) : p.Key > 0 - ? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", p.Key)) - : modData.Translation.GetString(NoTeam); + var label = noTeams ? TranslationProvider.GetString(Players) : p.Key > 0 + ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", p.Key)) + : TranslationProvider.GetString(NoTeam); teams.Add(label, p); } if (server.Clients.Any(c => c.IsSpectator)) - teams.Add(modData.Translation.GetString(Spectators), server.Clients.Where(c => c.IsSpectator)); + teams.Add(TranslationProvider.GetString(Spectators), server.Clients.Where(c => c.IsSpectator)); var factionInfo = modData.DefaultRules.Actors[SystemActors.World].TraitInfos(); foreach (var kv in teams) @@ -761,7 +761,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (game.Clients.Length > 10) displayClients = displayClients .Take(9) - .Append(modData.Translation.GetString(OtherPlayers, Translation.Arguments("players", game.Clients.Length - 9))); + .Append(TranslationProvider.GetString(OtherPlayers, Translation.Arguments("players", game.Clients.Length - 9))); var tooltip = displayClients.JoinWith("\n"); players.GetTooltipText = () => tooltip; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Settings/DisplaySettingsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Settings/DisplaySettingsLogic.cs index f32634c9a4..69a6833f93 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Settings/DisplaySettingsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Settings/DisplaySettingsLogic.cs @@ -101,17 +101,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic this.modData = modData; viewportSizes = modData.Manifest.Get(); - legacyFullscreen = modData.Translation.GetString(LegacyFullscreen); - fullscreen = modData.Translation.GetString(Fullscreen); + legacyFullscreen = TranslationProvider.GetString(LegacyFullscreen); + fullscreen = TranslationProvider.GetString(Fullscreen); registerPanel(panelID, label, InitPanel, ResetPanel); - showOnDamage = modData.Translation.GetString(ShowOnDamage); - alwaysShow = modData.Translation.GetString(AlwaysShow); + showOnDamage = TranslationProvider.GetString(ShowOnDamage); + alwaysShow = TranslationProvider.GetString(AlwaysShow); - automatic = modData.Translation.GetString(Automatic); - manual = modData.Translation.GetString(Manual); - disabled = modData.Translation.GetString(Disabled); + automatic = TranslationProvider.GetString(Automatic); + manual = TranslationProvider.GetString(Manual); + disabled = TranslationProvider.GetString(Disabled); } public static string GetViewportSizeName(ModData modData, WorldViewport worldViewport) @@ -119,13 +119,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic switch (worldViewport) { case WorldViewport.Close: - return modData.Translation.GetString(Close); + return TranslationProvider.GetString(Close); case WorldViewport.Medium: - return modData.Translation.GetString(Medium); + return TranslationProvider.GetString(Medium); case WorldViewport.Far: - return modData.Translation.GetString(Far); + return TranslationProvider.GetString(Far); case WorldViewport.Native: - return modData.Translation.GetString(Furthest); + return TranslationProvider.GetString(Furthest); default: return ""; } @@ -149,14 +149,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic SettingsUtils.BindCheckboxPref(panel, "HIDE_REPLAY_CHAT_CHECKBOX", gs, "HideReplayChat"); var windowModeDropdown = panel.Get("MODE_DROPDOWN"); - windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(modData, windowModeDropdown, ds, scrollPanel); + windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, ds, scrollPanel); windowModeDropdown.GetText = () => ds.Mode == WindowMode.Windowed - ? modData.Translation.GetString(Windowed) + ? TranslationProvider.GetString(Windowed) : ds.Mode == WindowMode.Fullscreen ? legacyFullscreen : fullscreen; var displaySelectionDropDown = panel.Get("DISPLAY_SELECTION_DROPDOWN"); displaySelectionDropDown.OnMouseDown = _ => ShowDisplaySelectionDropdown(displaySelectionDropDown, ds); - var displaySelectionLabel = new CachedTransform(i => modData.Translation.GetString(Display, Translation.Arguments("number", i + 1))); + var displaySelectionLabel = new CachedTransform(i => TranslationProvider.GetString(Display, Translation.Arguments("number", i + 1))); displaySelectionDropDown.GetText = () => displaySelectionLabel.Update(ds.VideoDisplay); displaySelectionDropDown.IsDisabled = () => Game.Renderer.DisplayCount < 2; @@ -168,15 +168,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic glProfileDropdown.IsDisabled = () => disableProfile; var statusBarsDropDown = panel.Get("STATUS_BAR_DROPDOWN"); - statusBarsDropDown.OnMouseDown = _ => ShowStatusBarsDropdown(modData, statusBarsDropDown, gs); + statusBarsDropDown.OnMouseDown = _ => ShowStatusBarsDropdown(statusBarsDropDown, gs); statusBarsDropDown.GetText = () => gs.StatusBars == StatusBarsType.Standard - ? modData.Translation.GetString(Standard) + ? TranslationProvider.GetString(Standard) : gs.StatusBars == StatusBarsType.DamageShow ? showOnDamage : alwaysShow; var targetLinesDropDown = panel.Get("TARGET_LINES_DROPDOWN"); - targetLinesDropDown.OnMouseDown = _ => ShowTargetLinesDropdown(modData, targetLinesDropDown, gs); + targetLinesDropDown.OnMouseDown = _ => ShowTargetLinesDropdown(targetLinesDropDown, gs); targetLinesDropDown.GetText = () => gs.TargetLines == TargetLinesType.Automatic ? automatic : gs.TargetLines == TargetLinesType.Manual @@ -332,13 +332,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic }; } - static void ShowWindowModeDropdown(ModData modData, DropDownButtonWidget dropdown, GraphicSettings s, ScrollPanelWidget scrollPanel) + static void ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s, ScrollPanelWidget scrollPanel) { var options = new Dictionary() { - { modData.Translation.GetString(Fullscreen), WindowMode.PseudoFullscreen }, - { modData.Translation.GetString(LegacyFullscreen), WindowMode.Fullscreen }, - { modData.Translation.GetString(Windowed), WindowMode.Windowed }, + { TranslationProvider.GetString(Fullscreen), WindowMode.PseudoFullscreen }, + { TranslationProvider.GetString(LegacyFullscreen), WindowMode.Fullscreen }, + { TranslationProvider.GetString(Windowed), WindowMode.Windowed }, }; ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) @@ -381,13 +381,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic } } - static void ShowStatusBarsDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s) + static void ShowStatusBarsDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary() { - { modData.Translation.GetString(Standard), StatusBarsType.Standard }, - { modData.Translation.GetString(ShowOnDamage), StatusBarsType.DamageShow }, - { modData.Translation.GetString(AlwaysShow), StatusBarsType.AlwaysShow }, + { TranslationProvider.GetString(Standard), StatusBarsType.Standard }, + { TranslationProvider.GetString(ShowOnDamage), StatusBarsType.DamageShow }, + { TranslationProvider.GetString(AlwaysShow), StatusBarsType.AlwaysShow }, }; ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) @@ -436,13 +436,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, profiles, SetupItem); } - static void ShowTargetLinesDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s) + static void ShowTargetLinesDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary() { - { modData.Translation.GetString(Automatic), TargetLinesType.Automatic }, - { modData.Translation.GetString(Manual), TargetLinesType.Manual }, - { modData.Translation.GetString(Disabled), TargetLinesType.Disabled }, + { TranslationProvider.GetString(Automatic), TargetLinesType.Automatic }, + { TranslationProvider.GetString(Manual), TargetLinesType.Manual }, + { TranslationProvider.GetString(Disabled), TargetLinesType.Disabled }, }; ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) diff --git a/OpenRA.Mods.Common/Widgets/Logic/Settings/InputSettingsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Settings/InputSettingsLogic.cs index 80aafd53b6..9d1ac62e20 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Settings/InputSettingsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Settings/InputSettingsLogic.cs @@ -55,15 +55,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly string classic; readonly string modern; - readonly ModData modData; - [ObjectCreator.UseCtor] - public InputSettingsLogic(Action>, Func> registerPanel, string panelID, string label, ModData modData) + public InputSettingsLogic(Action>, Func> registerPanel, string panelID, string label) { - this.modData = modData; - - classic = modData.Translation.GetString(Classic); - modern = modData.Translation.GetString(Modern); + classic = TranslationProvider.GetString(Classic); + modern = TranslationProvider.GetString(Modern); registerPanel(panelID, label, InitPanel, ResetPanel); } @@ -81,11 +77,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic SettingsUtils.BindSliderPref(panel, "UI_SCROLLSPEED_SLIDER", gs, "UIScrollSpeed"); var mouseControlDropdown = panel.Get("MOUSE_CONTROL_DROPDOWN"); - mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(modData, mouseControlDropdown, gs); + mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(mouseControlDropdown, gs); mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern; var mouseScrollDropdown = panel.Get("MOUSE_SCROLL_TYPE_DROPDOWN"); - mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(modData, mouseScrollDropdown, gs); + mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gs); mouseScrollDropdown.GetText = () => gs.MouseScroll.ToString(); var mouseControlDescClassic = panel.Get("MOUSE_CONTROL_DESC_CLASSIC"); @@ -130,7 +126,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic }; var zoomModifierDropdown = panel.Get("ZOOM_MODIFIER"); - zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(modData, zoomModifierDropdown, gs); + zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(zoomModifierDropdown, gs); zoomModifierDropdown.GetText = () => gs.ZoomModifier.ToString(); SettingsUtils.AdjustSettingsScrollPanelLayout(scrollPanel); @@ -162,12 +158,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic }; } - public static void ShowMouseControlDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s) + public static void ShowMouseControlDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary() { - { modData.Translation.GetString(Classic), true }, - { modData.Translation.GetString(Modern), false }, + { TranslationProvider.GetString(Classic), true }, + { TranslationProvider.GetString(Modern), false }, }; ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) @@ -182,14 +178,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, SetupItem); } - static void ShowMouseScrollDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s) + static void ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary() { - { modData.Translation.GetString(Disabled), MouseScrollType.Disabled }, - { modData.Translation.GetString(Standard), MouseScrollType.Standard }, - { modData.Translation.GetString(Inverted), MouseScrollType.Inverted }, - { modData.Translation.GetString(Joystick), MouseScrollType.Joystick }, + { TranslationProvider.GetString(Disabled), MouseScrollType.Disabled }, + { TranslationProvider.GetString(Standard), MouseScrollType.Standard }, + { TranslationProvider.GetString(Inverted), MouseScrollType.Inverted }, + { TranslationProvider.GetString(Joystick), MouseScrollType.Joystick }, }; ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) @@ -204,15 +200,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, SetupItem); } - static void ShowZoomModifierDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s) + static void ShowZoomModifierDropdown(DropDownButtonWidget dropdown, GameSettings s) { var options = new Dictionary() { - { modData.Translation.GetString(Alt), Modifiers.Alt }, - { modData.Translation.GetString(Ctrl), Modifiers.Ctrl }, - { modData.Translation.GetString(Meta), Modifiers.Meta }, - { modData.Translation.GetString(Shift), Modifiers.Shift }, - { modData.Translation.GetString(None), Modifiers.None } + { TranslationProvider.GetString(Alt), Modifiers.Alt }, + { TranslationProvider.GetString(Ctrl), Modifiers.Ctrl }, + { TranslationProvider.GetString(Meta), Modifiers.Meta }, + { TranslationProvider.GetString(Shift), Modifiers.Shift }, + { TranslationProvider.GetString(None), Modifiers.None } }; ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)