Add TranslationProvider

This commit is contained in:
Matthias Mailänder
2023-04-13 17:14:01 +03:00
committed by Matthias Mailänder
parent a065e6a47c
commit 68eec52cef
66 changed files with 384 additions and 333 deletions

View File

@@ -581,7 +581,7 @@ namespace OpenRA
Log.Write("debug", "Taking screenshot " + path); Log.Write("debug", "Taking screenshot " + path);
Renderer.SaveScreenshot(path); Renderer.SaveScreenshot(path);
TextNotificationsManager.Debug(ModData.Translation.GetString(SavedScreenshot, Translation.Arguments("filename", filename))); TextNotificationsManager.Debug(TranslationProvider.GetString(SavedScreenshot, Translation.Arguments("filename", filename)));
} }
} }

View File

@@ -256,8 +256,6 @@ namespace OpenRA
CellLayer<byte> projectedHeight; CellLayer<byte> projectedHeight;
Rectangle projectionSafeBounds; Rectangle projectionSafeBounds;
internal Translation Translation;
public static string ComputeUID(IReadOnlyPackage package) public static string ComputeUID(IReadOnlyPackage package)
{ {
return ComputeUID(package, GetMapFormat(package)); return ComputeUID(package, GetMapFormat(package));
@@ -450,8 +448,6 @@ namespace OpenRA
} }
Sequences = new SequenceSet(this, modData, Tileset, SequenceDefinitions); Sequences = new SequenceSet(this, modData, Tileset, SequenceDefinitions);
Translation = TranslationDefinitions == null ? null
: new Translation(Game.Settings.Player.Language, FieldLoader.GetValue<string[]>("value", TranslationDefinitions.Value), this);
var tl = new MPos(0, 0).ToCPos(this); var tl = new MPos(0, 0).ToCPos(this);
var br = new MPos(MapSize.X - 1, MapSize.Y - 1).ToCPos(this); var br = new MPos(MapSize.X - 1, MapSize.Y - 1).ToCPos(this);
@@ -1411,14 +1407,6 @@ namespace OpenRA
return false; return false;
} }
public string Translate(string key, IDictionary<string, object> args = null)
{
if (Translation != null && Translation.TryGetString(key, out var message, args))
return message;
return modData.Translation.GetString(key, args);
}
public void Dispose() public void Dispose()
{ {
Sequences.Dispose(); Sequences.Dispose();

View File

@@ -199,10 +199,14 @@ namespace OpenRA
public long DownloadBytes { get; private set; } public long DownloadBytes { get; private set; }
public int DownloadPercentage { get; private set; } public int DownloadPercentage { get; private set; }
/// <summary>
/// Functionality mirrors <see cref="TranslationProvider.GetString"/>, except instead of using
/// loaded <see cref="Map"/>'s translations as backup, we use this <see cref="MapPreview"/>'s.
/// </summary>
public string GetLocalisedString(string key, IDictionary<string, object> args = null) public string GetLocalisedString(string key, IDictionary<string, object> args = null)
{ {
// PERF: instead of loading mod level Translation for each MapPreview, reuse the already loaded one in modData. // PERF: instead of loading mod level Translation per each MapPreview, reuse the already loaded one in TranslationProvider.
if (modData.Translation.TryGetString(key, out var message, args)) if (TranslationProvider.TryGetModString(key, out var message, args))
return message; return message;
return innerData.Translation?.GetString(key, args) ?? key; return innerData.Translation?.GetString(key, args) ?? key;

View File

@@ -36,7 +36,6 @@ namespace OpenRA
public readonly IModelSequenceLoader ModelSequenceLoader; public readonly IModelSequenceLoader ModelSequenceLoader;
public readonly IVideoLoader[] VideoLoaders; public readonly IVideoLoader[] VideoLoaders;
public readonly HotkeyManager Hotkeys; public readonly HotkeyManager Hotkeys;
public readonly Translation Translation;
public ILoadScreen LoadScreen { get; } public ILoadScreen LoadScreen { get; }
public CursorProvider CursorProvider { get; private set; } public CursorProvider CursorProvider { get; private set; }
public FS ModFiles; public FS ModFiles;
@@ -102,8 +101,6 @@ namespace OpenRA
Hotkeys = new HotkeyManager(ModFiles, Game.Settings.Keys, Manifest); Hotkeys = new HotkeyManager(ModFiles, Game.Settings.Keys, Manifest);
Translation = new Translation(Game.Settings.Player.Language, Manifest.Translations, DefaultFileSystem);
defaultRules = Exts.Lazy(() => Ruleset.LoadDefaults(this)); defaultRules = Exts.Lazy(() => Ruleset.LoadDefaults(this));
defaultTerrainInfo = Exts.Lazy(() => defaultTerrainInfo = Exts.Lazy(() =>
{ {
@@ -137,6 +134,7 @@ namespace OpenRA
// horribly when you use ModData in unexpected ways. // horribly when you use ModData in unexpected ways.
ChromeMetrics.Initialize(this); ChromeMetrics.Initialize(this);
ChromeProvider.Initialize(this); ChromeProvider.Initialize(this);
TranslationProvider.Initialize(this, fileSystem);
Game.Sound.Initialize(SoundLoaders, fileSystem); Game.Sound.Initialize(SoundLoaders, fileSystem);

View File

@@ -76,7 +76,7 @@ namespace OpenRA.Network
return arguments.ToArray(); 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. // Let the FieldLoader do the dirty work of loading the public fields.
FieldLoader.Load(this, yaml); FieldLoader.Load(this, yaml);
@@ -95,7 +95,7 @@ namespace OpenRA.Network
argumentDictionary.Add(argument.Key, argument.Value); argumentDictionary.Add(argument.Key, argument.Value);
} }
TranslatedText = modData.Translation.GetString(Key, argumentDictionary); TranslatedText = TranslationProvider.GetString(Key, argumentDictionary);
} }
public static string Serialize(string key, Dictionary<string, object> arguments = null) public static string Serialize(string key, Dictionary<string, object> arguments = null)

View File

@@ -43,7 +43,7 @@ namespace OpenRA.Network
var yaml = MiniYaml.FromString(order.TargetString); var yaml = MiniYaml.FromString(order.TargetString);
foreach (var node in yaml) foreach (var node in yaml)
{ {
var localizedMessage = new LocalizedMessage(Game.ModData, node.Value); var localizedMessage = new LocalizedMessage(node.Value);
TextNotificationsManager.AddSystemLine(localizedMessage.TranslatedText); TextNotificationsManager.AddSystemLine(localizedMessage.TranslatedText);
} }

View File

@@ -958,7 +958,7 @@ namespace OpenRA.Server
DispatchServerOrdersToClients(Order.FromTargetString("LocalizedMessage", text, true)); DispatchServerOrdersToClients(Order.FromTargetString("LocalizedMessage", text, true));
if (Type == ServerType.Dedicated) if (Type == ServerType.Dedicated)
WriteLineWithTimeStamp(ModData.Translation.GetString(key, arguments)); WriteLineWithTimeStamp(TranslationProvider.GetString(key, arguments));
} }
public void SendLocalizedMessageTo(Connection conn, string key, Dictionary<string, object> arguments = null) public void SendLocalizedMessageTo(Connection conn, string key, Dictionary<string, object> arguments = null)
@@ -1312,7 +1312,7 @@ namespace OpenRA.Server
{ {
lock (LobbyInfo) lock (LobbyInfo)
{ {
WriteLineWithTimeStamp(ModData.Translation.GetString(GameStarted)); WriteLineWithTimeStamp(TranslationProvider.GetString(GameStarted));
// Drop any players who are not ready // Drop any players who are not ready
foreach (var c in Conns.Where(c => !c.Validated || GetClient(c).IsInvalid).ToArray()) foreach (var c in Conns.Where(c => !c.Validated || GetClient(c).IsInvalid).ToArray())

View File

@@ -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<string[]>("value", map.TranslationDefinitions.Value), fileSystem)
: null;
}
}
public static string GetString(string key, IDictionary<string, object> 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<string, object> 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;
}
}
/// <summary>Should only be used by <see cref="MapPreview"/>.</summary>
internal static bool TryGetModString(string key, out string message, IDictionary<string, object> args = null)
{
lock (SyncObject)
{
return modTranslation.TryGetString(key, out message, args);
}
}
}
}

View File

@@ -49,9 +49,9 @@ namespace OpenRA.Mods.Cnc.Installer
Action<long> onProgress = null; Action<long> onProgress = null;
if (stream.Length < InstallFromSourceLogic.ShowPercentageThreshold) 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 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)) using (var target = File.OpenWrite(targetPath))
{ {

View File

@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Commands
if (command.Value != null) if (command.Value != null)
command.Value.InvokeCommand(name.ToLowerInvariant(), message[(1 + name.Length)..].Trim()); command.Value.InvokeCommand(name.ToLowerInvariant(), message[(1 + name.Length)..].Trim());
else else
TextNotificationsManager.Debug(Game.ModData.Translation.GetString(InvalidCommand, Translation.Arguments("name", name))); TextNotificationsManager.Debug(TranslationProvider.GetString(InvalidCommand, Translation.Arguments("name", name)));
return false; return false;
} }

View File

@@ -121,7 +121,7 @@ namespace OpenRA.Mods.Common.Commands
if (!developerMode.Enabled) if (!developerMode.Enabled)
{ {
TextNotificationsManager.Debug(Game.ModData.Translation.GetString(CheatsDisabled)); TextNotificationsManager.Debug(TranslationProvider.GetString(CheatsDisabled));
return; return;
} }
@@ -149,7 +149,7 @@ namespace OpenRA.Mods.Common.Commands
giveCashOrder.ExtraData = (uint)cash; giveCashOrder.ExtraData = (uint)cash;
else else
{ {
TextNotificationsManager.Debug(Game.ModData.Translation.GetString(InvalidCashAmount)); TextNotificationsManager.Debug(TranslationProvider.GetString(InvalidCashAmount));
return; return;
} }

View File

@@ -51,12 +51,12 @@ namespace OpenRA.Mods.Common.Commands
public void InvokeCommand(string name, string arg) 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) foreach (var key in console.Commands.Keys)
{ {
if (!helpDescriptions.TryGetValue(key, out var description)) if (!helpDescriptions.TryGetValue(key, out var description))
description = Game.ModData.Translation.GetString(NoDescription); description = TranslationProvider.GetString(NoDescription);
TextNotificationsManager.Debug($"{key}: {description}"); TextNotificationsManager.Debug($"{key}: {description}");
} }
@@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Commands
public void RegisterHelp(string name, string description) public void RegisterHelp(string name, string description)
{ {
helpDescriptions[name] = Game.ModData.Translation.GetString(description); helpDescriptions[name] = TranslationProvider.GetString(description);
} }
} }
} }

View File

@@ -44,9 +44,9 @@ namespace OpenRA.Mods.Common.Installer
Action<long> onProgress = null; Action<long> onProgress = null;
if (length < InstallFromSourceLogic.ShowPercentageThreshold) if (length < InstallFromSourceLogic.ShowPercentageThreshold)
updateMessage(modData.Translation.GetString(InstallFromSourceLogic.CopyingFilename, Translation.Arguments("filename", displayFilename))); updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.CopyingFilename, Translation.Arguments("filename", displayFilename)));
else 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); InstallerUtils.CopyStream(source, target, length, onProgress);
} }

View File

@@ -67,9 +67,9 @@ namespace OpenRA.Mods.Common.Installer
Action<long> onProgress = null; Action<long> onProgress = null;
if (length < InstallFromSourceLogic.ShowPercentageThreshold) if (length < InstallFromSourceLogic.ShowPercentageThreshold)
updateMessage(modData.Translation.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename)));
else 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)) using (var target = File.OpenWrite(targetPath))
{ {

View File

@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Installer
{ {
Log.Write("install", $"Extracting {sourcePath} -> {targetPath}"); Log.Write("install", $"Extracting {sourcePath} -> {targetPath}");
var displayFilename = Path.GetFileName(Path.GetFileName(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); reader.ExtractFile(node.Value.Value, target, OnProgress);
} }
} }

View File

@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Installer
{ {
Log.Write("install", $"Extracting {sourcePath} -> {targetPath}"); Log.Write("install", $"Extracting {sourcePath} -> {targetPath}");
var displayFilename = Path.GetFileName(Path.GetFileName(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); reader.ExtractFile(node.Value.Value, target, OnProgress);
} }
} }

View File

@@ -60,9 +60,9 @@ namespace OpenRA.Mods.Common.Installer
Action<long> onProgress = null; Action<long> onProgress = null;
if (length < InstallFromSourceLogic.ShowPercentageThreshold) if (length < InstallFromSourceLogic.ShowPercentageThreshold)
updateMessage(modData.Translation.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename))); updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename)));
else 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)) using (var target = File.OpenWrite(targetPath))
{ {

View File

@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Installer
using (var targetStream = File.OpenWrite(targetPath)) using (var targetStream = File.OpenWrite(targetPath))
sourceStream.CopyTo(targetStream); 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); extracted.Add(targetPath);
} }

View File

@@ -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);
} }
} }
} }

View File

@@ -279,7 +279,7 @@ namespace OpenRA.Mods.Common.Traits
} }
var arguments = Translation.Arguments("cheat", order.OrderString, "player", self.Owner.PlayerName, "suffix", debugSuffix); 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; bool IUnlocksRenderPlayer.RenderPlayerUnlocked => Enabled;

View File

@@ -92,7 +92,7 @@ namespace OpenRA.Mods.Common.Traits
techLevels, TechLevel, TechLevelDropdownLocked); techLevels, TechLevel, TechLevelDropdownLocked);
var gameSpeeds = Game.ModData.Manifest.Get<GameSpeeds>(); var gameSpeeds = Game.ModData.Manifest.Get<GameSpeeds>();
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. // NOTE: This is just exposing the UI, the backend logic for this option is hardcoded in World.
yield return new LobbyOption(map, "gamespeed", yield return new LobbyOption(map, "gamespeed",

View File

@@ -87,9 +87,9 @@ namespace OpenRA.Mods.Common.Traits
var timelimits = TimeLimitOptions.ToDictionary(m => m.ToString(), m => var timelimits = TimeLimitOptions.ToDictionary(m => m.ToString(), m =>
{ {
if (m == 0) if (m == 0)
return Game.ModData.Translation.GetString(NoTimeLimit); return TranslationProvider.GetString(NoTimeLimit);
else 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, yield return new LobbyOption(map, "timelimit", TimeLimitLabel, TimeLimitDescription, TimeLimitDropdownVisible, TimeLimitDisplayOrder,
@@ -181,7 +181,7 @@ namespace OpenRA.Mods.Common.Traits
countdownLabel.GetText = () => null; countdownLabel.GetText = () => null;
if (!info.SkipTimerExpiredNotification) if (!info.SkipTimerExpiredNotification)
TextNotificationsManager.AddSystemLine(Game.ModData.Translation.GetString(TimeLimitExpired)); TextNotificationsManager.AddSystemLine(TranslationProvider.GetString(TimeLimitExpired));
} }
} }
} }

View File

@@ -36,11 +36,11 @@ namespace OpenRA.Mods.Common.Widgets
var cancelButton = prompt.GetOrNull<ButtonWidget>("CANCEL_BUTTON"); var cancelButton = prompt.GetOrNull<ButtonWidget>("CANCEL_BUTTON");
var otherButton = prompt.GetOrNull<ButtonWidget>("OTHER_BUTTON"); var otherButton = prompt.GetOrNull<ButtonWidget>("OTHER_BUTTON");
var titleMessage = modData.Translation.GetString(title, titleArguments); var titleMessage = TranslationProvider.GetString(title, titleArguments);
prompt.Get<LabelWidget>("PROMPT_TITLE").GetText = () => titleMessage; prompt.Get<LabelWidget>("PROMPT_TITLE").GetText = () => titleMessage;
var headerTemplate = prompt.Get<LabelWidget>("PROMPT_TEXT"); var headerTemplate = prompt.Get<LabelWidget>("PROMPT_TEXT");
var textMessage = modData.Translation.GetString(text, textArguments); var textMessage = TranslationProvider.GetString(text, textArguments);
var headerLines = textMessage.Split('\n'); var headerLines = textMessage.Split('\n');
var headerHeight = 0; var headerHeight = 0;
foreach (var l in headerLines) foreach (var l in headerLines)
@@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Widgets
if (!string.IsNullOrEmpty(confirmText)) if (!string.IsNullOrEmpty(confirmText))
{ {
var confirmTextMessage = modData.Translation.GetString(confirmText); var confirmTextMessage = TranslationProvider.GetString(confirmText);
confirmButton.GetText = () => confirmTextMessage; confirmButton.GetText = () => confirmTextMessage;
} }
} }
@@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Widgets
if (!string.IsNullOrEmpty(cancelText)) if (!string.IsNullOrEmpty(cancelText))
{ {
var cancelTextMessage = modData.Translation.GetString(cancelText); var cancelTextMessage = TranslationProvider.GetString(cancelText);
cancelButton.GetText = () => cancelTextMessage; cancelButton.GetText = () => cancelTextMessage;
} }
} }
@@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Widgets
if (!string.IsNullOrEmpty(otherText)) if (!string.IsNullOrEmpty(otherText))
{ {
var otherTextMessage = modData.Translation.GetString(otherText); var otherTextMessage = TranslationProvider.GetString(otherText);
otherButton.GetText = () => otherTextMessage; otherButton.GetText = () => otherTextMessage;
} }
} }
@@ -114,10 +114,10 @@ namespace OpenRA.Mods.Common.Widgets
Func<bool> doValidate = null; Func<bool> doValidate = null;
ButtonWidget acceptButton = null, cancelButton = null; ButtonWidget acceptButton = null, cancelButton = null;
var titleMessage = modData.Translation.GetString(title); var titleMessage = TranslationProvider.GetString(title);
panel.Get<LabelWidget>("PROMPT_TITLE").GetText = () => titleMessage; panel.Get<LabelWidget>("PROMPT_TITLE").GetText = () => titleMessage;
var promptMessage = modData.Translation.GetString(prompt); var promptMessage = TranslationProvider.GetString(prompt);
panel.Get<LabelWidget>("PROMPT_TEXT").GetText = () => promptMessage; panel.Get<LabelWidget>("PROMPT_TEXT").GetText = () => promptMessage;
var input = panel.Get<TextFieldWidget>("INPUT_TEXT"); var input = panel.Get<TextFieldWidget>("INPUT_TEXT");
@@ -147,7 +147,7 @@ namespace OpenRA.Mods.Common.Widgets
acceptButton = panel.Get<ButtonWidget>("ACCEPT_BUTTON"); acceptButton = panel.Get<ButtonWidget>("ACCEPT_BUTTON");
if (!string.IsNullOrEmpty(acceptText)) if (!string.IsNullOrEmpty(acceptText))
{ {
var acceptTextMessage = modData.Translation.GetString(acceptText); var acceptTextMessage = TranslationProvider.GetString(acceptText);
acceptButton.GetText = () => acceptTextMessage; acceptButton.GetText = () => acceptTextMessage;
} }
@@ -163,7 +163,7 @@ namespace OpenRA.Mods.Common.Widgets
cancelButton = panel.Get<ButtonWidget>("CANCEL_BUTTON"); cancelButton = panel.Get<ButtonWidget>("CANCEL_BUTTON");
if (!string.IsNullOrEmpty(cancelText)) if (!string.IsNullOrEmpty(cancelText))
{ {
var cancelTextMessage = modData.Translation.GetString(cancelText); var cancelTextMessage = TranslationProvider.GetString(cancelText);
cancelButton.GetText = () => cancelTextMessage; cancelButton.GetText = () => cancelTextMessage;
} }

View File

@@ -96,7 +96,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
this.modData = modData; this.modData = modData;
panel = widget; panel = widget;
allPackages = modData.Translation.GetString(AllPackages); allPackages = TranslationProvider.GetString(AllPackages);
var colorPickerPalettes = world.WorldActor.TraitsImplementing<IProvidesAssetBrowserColorPickerPalettes>() var colorPickerPalettes = world.WorldActor.TraitsImplementing<IProvidesAssetBrowserColorPickerPalettes>()
.SelectMany(p => p.ColorPickerPaletteNames) .SelectMany(p => p.ColorPickerPaletteNames)
@@ -238,7 +238,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (frameText != null) if (frameText != null)
{ {
var soundLength = new CachedTransform<double, string>(p => var soundLength = new CachedTransform<double, string>(p =>
modData.Translation.GetString(LengthInSeconds, Translation.Arguments("length", Math.Round(p, 3)))); TranslationProvider.GetString(LengthInSeconds, Translation.Arguments("length", Math.Round(p, 3))));
frameText.GetText = () => frameText.GetText = () =>
{ {

View File

@@ -66,7 +66,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var panel = widget; var panel = widget;
panel.Get<ButtonWidget>("ABORT_BUTTON").OnClick = () => { CloseWindow(); onAbort(); }; panel.Get<ButtonWidget>("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<LabelWidget>("CONNECTING_DESC").GetText = () => connectingDesc; widget.Get<LabelWidget>("CONNECTING_DESC").GetText = () => connectingDesc;
} }
@@ -129,15 +129,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
onRetry(pass); 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<LabelWidget>("CONNECTING_DESC").GetText = () => connectingDescText; widget.Get<LabelWidget>("CONNECTING_DESC").GetText = () => connectingDescText;
var connectionError = widget.Get<LabelWidget>("CONNECTION_ERROR"); var connectionError = widget.Get<LabelWidget>("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; connectionError.GetText = () => connectionErrorText;
var panelTitle = widget.Get<LabelWidget>("TITLE"); var panelTitle = widget.Get<LabelWidget>("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; panelTitle.GetText = () => panelTitleText;
passwordField = panel.GetOrNull<PasswordFieldWidget>("PASSWORD"); passwordField = panel.GetOrNull<PasswordFieldWidget>("PASSWORD");

View File

@@ -34,7 +34,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
enum ActorIDStatus { Normal = 0, Duplicate = 1, Empty = 3 } enum ActorIDStatus { Normal = 0, Duplicate = 1, Empty = 3 }
readonly WorldRenderer worldRenderer; readonly WorldRenderer worldRenderer;
readonly ModData modData;
readonly EditorActorLayer editorActorLayer; readonly EditorActorLayer editorActorLayer;
readonly EditorActionManager editorActionManager; readonly EditorActionManager editorActionManager;
readonly EditorViewportControllerWidget editor; readonly EditorViewportControllerWidget editor;
@@ -86,9 +85,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public ActorEditLogic(Widget widget, ModData modData, World world, WorldRenderer worldRenderer, Dictionary<string, MiniYaml> logicArgs) public ActorEditLogic(Widget widget, World world, WorldRenderer worldRenderer, Dictionary<string, MiniYaml> logicArgs)
{ {
this.modData = modData;
this.worldRenderer = worldRenderer; this.worldRenderer = worldRenderer;
editorActorLayer = world.WorldActor.Trait<EditorActorLayer>(); editorActorLayer = world.WorldActor.Trait<EditorActorLayer>();
@@ -115,8 +113,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
actorIDErrorLabel = actorEditPanel.Get<LabelWidget>("ACTOR_ID_ERROR_LABEL"); actorIDErrorLabel = actorEditPanel.Get<LabelWidget>("ACTOR_ID_ERROR_LABEL");
actorIDErrorLabel.IsVisible = () => actorIDStatus != ActorIDStatus.Normal; actorIDErrorLabel.IsVisible = () => actorIDStatus != ActorIDStatus.Normal;
actorIDErrorLabel.GetText = () => actorIDStatus == ActorIDStatus.Duplicate ? actorIDErrorLabel.GetText = () => actorIDStatus == ActorIDStatus.Duplicate ?
modData.Translation.GetString(DuplicateActorId) TranslationProvider.GetString(DuplicateActorId)
: modData.Translation.GetString(EnterActorId); : TranslationProvider.GetString(EnterActorId);
if (logicArgs.TryGetValue("EditPanelPadding", out var yaml)) if (logicArgs.TryGetValue("EditPanelPadding", out var yaml))
editPanelPadding = FieldLoader.GetValue<int>("EditPanelPadding", yaml.Value); editPanelPadding = FieldLoader.GetValue<int>("EditPanelPadding", yaml.Value);
@@ -146,7 +144,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (editorActorLayer[actorId] != null) if (editorActorLayer[actorId] != null)
{ {
nextActorIDStatus = ActorIDStatus.Duplicate; nextActorIDStatus = ActorIDStatus.Duplicate;
actorIDErrorLabel.Text = modData.Translation.GetString(DuplicateActorId); actorIDErrorLabel.Text = TranslationProvider.GetString(DuplicateActorId);
actorIDErrorLabel.Visible = true; actorIDErrorLabel.Visible = true;
return; return;
} }
@@ -230,7 +228,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
// Add owner dropdown // Add owner dropdown
var ownerContainer = dropdownOptionTemplate.Clone(); var ownerContainer = dropdownOptionTemplate.Clone();
var owner = modData.Translation.GetString(Owner); var owner = TranslationProvider.GetString(Owner);
ownerContainer.Get<LabelWidget>("LABEL").GetText = () => owner; ownerContainer.Get<LabelWidget>("LABEL").GetText = () => owner;
var ownerDropdown = ownerContainer.Get<DropDownButtonWidget>("OPTION"); var ownerDropdown = ownerContainer.Get<DropDownButtonWidget>("OPTION");
var selectedOwner = actor.Owner; var selectedOwner = actor.Owner;

View File

@@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (tooltip != null) if (tooltip != null)
searchTerms.Add(tooltip.Name); 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}"; var tooltipText = tooltip == null ? actorType : tooltip.Name + $"\n{actorType}";
allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), tooltipText)); allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), tooltipText));
} }

View File

@@ -71,10 +71,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return true; return true;
}; };
var none = ModData.Translation.GetString(None); var none = TranslationProvider.GetString(None);
var searchResults = ModData.Translation.GetString(SearchResults); var searchResults = TranslationProvider.GetString(SearchResults);
var all = ModData.Translation.GetString(All); var all = TranslationProvider.GetString(All);
var multiple = ModData.Translation.GetString(Multiple); var multiple = TranslationProvider.GetString(Multiple);
var categorySelector = widget.Get<DropDownButtonWidget>("CATEGORIES_DROPDOWN"); var categorySelector = widget.Get<DropDownButtonWidget>("CATEGORIES_DROPDOWN");
categorySelector.GetText = () => categorySelector.GetText = () =>

View File

@@ -170,7 +170,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var fileTypes = new Dictionary<MapFileType, MapFileTypeInfo>() var fileTypes = new Dictionary<MapFileType, MapFileTypeInfo>()
{ {
{ MapFileType.OraMap, new MapFileTypeInfo { Extension = ".oramap", UiLabel = ".oramap" } }, { 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<DropDownButtonWidget>("TYPE_DROPDOWN"); var typeDropdown = widget.Get<DropDownButtonWidget>("TYPE_DROPDOWN");
@@ -316,7 +316,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (actionManager != null) if (actionManager != null)
actionManager.Modified = false; actionManager.Modified = false;
TextNotificationsManager.AddTransientLine(modData.Translation.GetString(SaveCurrentMap), world.LocalPlayer); TextNotificationsManager.AddTransientLine(TranslationProvider.GetString(SaveCurrentMap), world.LocalPlayer);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@@ -301,7 +301,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
catch (Exception ex) 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()); Log.Write("debug", ex.ToString());
return; return;
} }

View File

@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (tabButton != null) if (tabButton != null)
{ {
tabButton.Text = modData.Translation.GetString(label); tabButton.Text = TranslationProvider.GetString(label);
tabButton.OnClick = () => tabButton.OnClick = () =>
{ {
if (activePanel == IngameInfoPanel.Chat) if (activePanel == IngameInfoPanel.Chat)

View File

@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
readonly ContainerWidget template; readonly ContainerWidget template;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public GameInfoObjectivesLogic(Widget widget, World world, ModData modData) public GameInfoObjectivesLogic(Widget widget, World world)
{ {
var player = world.RenderPlayer ?? world.LocalPlayer; var player = world.RenderPlayer ?? world.LocalPlayer;
@@ -51,9 +51,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
var missionStatus = widget.Get<LabelWidget>("MISSION_STATUS"); var missionStatus = widget.Get<LabelWidget>("MISSION_STATUS");
var inProgress = modData.Translation.GetString(InProgress); var inProgress = TranslationProvider.GetString(InProgress);
var accomplished = modData.Translation.GetString(Accomplished); var accomplished = TranslationProvider.GetString(Accomplished);
var failed = modData.Translation.GetString(Failed); var failed = TranslationProvider.GetString(Failed);
missionStatus.GetText = () => player.WinState == WinState.Undefined ? inProgress : missionStatus.GetText = () => player.WinState == WinState.Undefined ? inProgress :
player.WinState == WinState.Won ? accomplished : failed; player.WinState == WinState.Won ? accomplished : failed;
missionStatus.GetColor = () => player.WinState == WinState.Undefined ? Color.White : missionStatus.GetColor = () => player.WinState == WinState.Undefined ? Color.White :

View File

@@ -79,9 +79,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
checkbox.GetText = () => mo.Objectives[0].Description; checkbox.GetText = () => mo.Objectives[0].Description;
} }
var failed = modData.Translation.GetString(Failed); var failed = TranslationProvider.GetString(Failed);
var inProgress = modData.Translation.GetString(InProgress); var inProgress = TranslationProvider.GetString(InProgress);
var accomplished = modData.Translation.GetString(Accomplished); var accomplished = TranslationProvider.GetString(Accomplished);
statusLabel.GetText = () => player.WinState == WinState.Won ? accomplished : statusLabel.GetText = () => player.WinState == WinState.Won ? accomplished :
player.WinState == WinState.Lost ? failed : inProgress; player.WinState == WinState.Lost ? failed : inProgress;
statusLabel.GetColor = () => player.WinState == WinState.Won ? Color.LimeGreen : statusLabel.GetColor = () => player.WinState == WinState.Won ? Color.LimeGreen :
@@ -104,8 +104,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var teamTemplate = playerPanel.Get<ScrollItemWidget>("TEAM_TEMPLATE"); var teamTemplate = playerPanel.Get<ScrollItemWidget>("TEAM_TEMPLATE");
var playerTemplate = playerPanel.Get("PLAYER_TEMPLATE"); var playerTemplate = playerPanel.Get("PLAYER_TEMPLATE");
var spectatorTemplate = playerPanel.Get("SPECTATOR_TEMPLATE"); var spectatorTemplate = playerPanel.Get("SPECTATOR_TEMPLATE");
var unmuteTooltip = modData.Translation.GetString(Unmute); var unmuteTooltip = TranslationProvider.GetString(Unmute);
var muteTooltip = modData.Translation.GetString(Mute); var muteTooltip = TranslationProvider.GetString(Mute);
playerPanel.RemoveChildren(); playerPanel.RemoveChildren();
var teams = world.Players.Where(p => !p.NonCombatant && p.Playable) 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 teamHeader = ScrollItemWidget.Setup(teamTemplate, () => false, () => { });
var team = t.Key > 0 var team = t.Key > 0
? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", t.Key)) ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", t.Key))
: modData.Translation.GetString(NoTeam); : TranslationProvider.GetString(NoTeam);
teamHeader.Get<LabelWidget>("TEAM").GetText = () => team; teamHeader.Get<LabelWidget>("TEAM").GetText = () => team;
var teamRating = teamHeader.Get<LabelWidget>("TEAM_SCORE"); var teamRating = teamHeader.Get<LabelWidget>("TEAM_SCORE");
var scoreCache = new CachedTransform<int, string>(s => s.ToString()); var scoreCache = new CachedTransform<int, string>(s => s.ToString());
@@ -193,7 +193,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (spectators.Count > 0) if (spectators.Count > 0)
{ {
var spectatorHeader = ScrollItemWidget.Setup(teamTemplate, () => false, () => { }); var spectatorHeader = ScrollItemWidget.Setup(teamTemplate, () => false, () => { });
var spectatorTeam = modData.Translation.GetString(Spectators); var spectatorTeam = TranslationProvider.GetString(Spectators);
spectatorHeader.Get<LabelWidget>("TEAM").GetText = () => spectatorTeam; spectatorHeader.Get<LabelWidget>("TEAM").GetText = () => spectatorTeam;
playerPanel.AddChild(spectatorHeader); playerPanel.AddChild(spectatorHeader);
@@ -212,7 +212,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
nameLabel.GetText = () => 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)); return name.Update((client.Name, suffix));
}; };

View File

@@ -43,10 +43,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
bool Paused() => world.Paused || world.ReplayTimestep == 0; bool Paused() => world.Paused || world.ReplayTimestep == 0;
var pausedText = modData.Translation.GetString(GameTimerLogic.Paused); var pausedText = TranslationProvider.GetString(GameTimerLogic.Paused);
var maxSpeedText = modData.Translation.GetString(MaxSpeed); var maxSpeedText = TranslationProvider.GetString(MaxSpeed);
var speedText = new CachedTransform<int, string>(p => var speedText = new CachedTransform<int, string>(p =>
modData.Translation.GetString(Speed, Translation.Arguments("percentage", p))); TranslationProvider.GetString(Speed, Translation.Arguments("percentage", p)));
if (timer != null) if (timer != null)
{ {
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
var timerText = new CachedTransform<int, string>(p => var timerText = new CachedTransform<int, string>(p =>
modData.Translation.GetString(Complete, Translation.Arguments("percentage", p))); TranslationProvider.GetString(Complete, Translation.Arguments("percentage", p)));
if (timer is LabelWithTooltipWidget timerTooltip) if (timer is LabelWithTooltipWidget timerTooltip)
{ {
var connection = orderManager.Connection as ReplayConnection; var connection = orderManager.Connection as ReplayConnection;

View File

@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
displayResources = playerResources.Cash + playerResources.Resources; displayResources = playerResources.Cash + playerResources.Resources;
siloUsageTooltipCache = new CachedTransform<(int Resources, int Capacity), string>(x => 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<LabelWithTooltipWidget>("CASH"); cashLabel = widget.Get<LabelWithTooltipWidget>("CASH");
cashLabel.GetTooltipText = () => siloUsageTooltip; cashLabel.GetTooltipText = () => siloUsageTooltip;

View File

@@ -70,10 +70,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var disableTeamChat = alwaysDisabled || (world.LocalPlayer != null && !players.Any(p => p.IsAlliedWith(world.LocalPlayer))); var disableTeamChat = alwaysDisabled || (world.LocalPlayer != null && !players.Any(p => p.IsAlliedWith(world.LocalPlayer)));
var teamChat = !disableTeamChat; var teamChat = !disableTeamChat;
var teamMessage = modData.Translation.GetString(TeamChat); var teamMessage = TranslationProvider.GetString(TeamChat);
var allMessage = modData.Translation.GetString(GeneralChat); 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 // Only execute this once, the first time this widget is loaded
if (TextNotificationsManager.MutedPlayers.Count == 0) if (TextNotificationsManager.MutedPlayers.Count == 0)
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return true; return true;
}; };
chatAvailableIn = new CachedTransform<int, string>(x => modData.Translation.GetString(ChatAvailability, Translation.Arguments("seconds", x))); chatAvailableIn = new CachedTransform<int, string>(x => TranslationProvider.GetString(ChatAvailability, Translation.Arguments("seconds", x)));
if (!isMenuChat) if (!isMenuChat)
{ {

View File

@@ -270,7 +270,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
button.Id = id; button.Id = id;
button.IsDisabled = () => leaving; button.IsDisabled = () => leaving;
var translation = modData.Translation.GetString(text); var translation = TranslationProvider.GetString(text);
button.GetText = () => translation; button.GetText = () => translation;
buttonContainer.AddChild(button); buttonContainer.AddChild(button);
buttons.Add(button); buttons.Add(button);
@@ -284,8 +284,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return; return;
var button = AddButton("ABORT_MISSION", world.IsGameOver var button = AddButton("ABORT_MISSION", world.IsGameOver
? modData.Translation.GetString(Leave) ? TranslationProvider.GetString(Leave)
: modData.Translation.GetString(AbortMission)); : TranslationProvider.GetString(AbortMission));
button.OnClick = () => button.OnClick = () =>
{ {

View File

@@ -35,10 +35,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
powerBar.TooltipTextCached = new CachedTransform<(float Current, float Capacity), string>(usage => powerBar.TooltipTextCached = new CachedTransform<(float Current, float Capacity), string>(usage =>
{ {
var capacity = developerMode.UnlimitedPower ? var capacity = developerMode.UnlimitedPower ?
modData.Translation.GetString(Infinite) : TranslationProvider.GetString(Infinite) :
powerManager.PowerProvided.ToString(); powerManager.PowerProvided.ToString();
return modData.Translation.GetString( return TranslationProvider.GetString(
PowerUsage, PowerUsage,
Translation.Arguments("usage", usage.Current, "capacity", capacity)); Translation.Arguments("usage", usage.Current, "capacity", capacity));
}); });

View File

@@ -31,7 +31,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>(); var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
var power = widget.Get<LabelWithTooltipWidget>("POWER"); var power = widget.Get<LabelWithTooltipWidget>("POWER");
var powerIcon = widget.Get<ImageWidget>("POWER_ICON"); var powerIcon = widget.Get<ImageWidget>("POWER_ICON");
var unlimitedCapacity = modData.Translation.GetString(Infinite); var unlimitedCapacity = TranslationProvider.GetString(Infinite);
powerIcon.GetImageName = () => powerManager.ExcessPower < 0 ? "power-critical" : "power-normal"; powerIcon.GetImageName = () => powerManager.ExcessPower < 0 ? "power-critical" : "power-normal";
power.GetColor = () => powerManager.ExcessPower < 0 ? Color.Red : Color.White; 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) => var tooltipTextCached = new CachedTransform<(string, string), string>(((string Usage, string Capacity) args) =>
{ {
return modData.Translation.GetString( return TranslationProvider.GetString(
PowerUsage, PowerUsage,
Translation.Arguments("usage", args.Usage, "capacity", args.Capacity)); Translation.Arguments("usage", args.Usage, "capacity", args.Capacity));
}); });

View File

@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
siloBar.GetUsed = () => playerResources.Resources; siloBar.GetUsed = () => playerResources.Resources;
siloBar.TooltipTextCached = new CachedTransform<(float Current, float Capacity), string>(usage => siloBar.TooltipTextCached = new CachedTransform<(float Current, float Capacity), string>(usage =>
{ {
return modData.Translation.GetString( return TranslationProvider.GetString(
SiloUsage, SiloUsage,
Translation.Arguments("usage", usage.Current, "capacity", usage.Capacity)); Translation.Arguments("usage", usage.Current, "capacity", usage.Capacity));
}); });

View File

@@ -104,10 +104,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var groups = new Dictionary<string, IEnumerable<CameraOption>>(); var groups = new Dictionary<string, IEnumerable<CameraOption>>();
combined = new CameraOption(this, world, modData.Translation.GetString(CameraOptionAllPlayers), world.Players.First(p => p.InternalName == "Everyone")); combined = new CameraOption(this, world, TranslationProvider.GetString(CameraOptionAllPlayers), world.Players.First(p => p.InternalName == "Everyone"));
disableShroud = new CameraOption(this, world, modData.Translation.GetString(CameraOptionDisableShroud), null); disableShroud = new CameraOption(this, world, TranslationProvider.GetString(CameraOptionDisableShroud), null);
if (!limitViews) if (!limitViews)
groups.Add(modData.Translation.GetString(CameraOptionOther), new List<CameraOption>() { combined, disableShroud }); groups.Add(TranslationProvider.GetString(CameraOptionOther), new List<CameraOption>() { combined, disableShroud });
teams = world.Players.Where(p => !p.NonCombatant && p.Playable) teams = world.Players.Where(p => !p.NonCombatant && p.Playable)
.Select(p => new CameraOption(this, p)) .Select(p => new CameraOption(this, p))
@@ -119,9 +119,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
foreach (var t in teams) foreach (var t in teams)
{ {
totalPlayers += t.Count(); totalPlayers += t.Count();
var label = noTeams ? modData.Translation.GetString(Players) : t.Key > 0 var label = noTeams ? TranslationProvider.GetString(Players) : t.Key > 0
? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", t.Key)) ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", t.Key))
: modData.Translation.GetString(NoTeam); : TranslationProvider.GetString(NoTeam);
groups.Add(label, t); groups.Add(label, t);
} }

View File

@@ -144,10 +144,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var statsDropDown = widget.Get<DropDownButtonWidget>("STATS_DROPDOWN"); var statsDropDown = widget.Get<DropDownButtonWidget>("STATS_DROPDOWN");
StatsDropDownOption CreateStatsOption(string title, ObserverStatsPanel panel, ScrollItemWidget template, Action a) StatsDropDownOption CreateStatsOption(string title, ObserverStatsPanel panel, ScrollItemWidget template, Action a)
{ {
title = modData.Translation.GetString(title); title = TranslationProvider.GetString(title);
return new StatsDropDownOption return new StatsDropDownOption
{ {
Title = modData.Translation.GetString(title), Title = TranslationProvider.GetString(title),
IsSelected = () => activePanel == panel, IsSelected = () => activePanel == panel,
OnClick = () => OnClick = () =>
{ {
@@ -168,23 +168,23 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
new StatsDropDownOption new StatsDropDownOption
{ {
Title = modData.Translation.GetString(InformationNone), Title = TranslationProvider.GetString(InformationNone),
IsSelected = () => activePanel == ObserverStatsPanel.None, IsSelected = () => activePanel == ObserverStatsPanel.None,
OnClick = () => OnClick = () =>
{ {
var informationNone = modData.Translation.GetString(InformationNone); var informationNone = TranslationProvider.GetString(InformationNone);
statsDropDown.GetText = () => informationNone; statsDropDown.GetText = () => informationNone;
playerStatsPanel.Visible = false; playerStatsPanel.Visible = false;
ClearStats(); ClearStats();
activePanel = ObserverStatsPanel.None; activePanel = ObserverStatsPanel.None;
} }
}, },
CreateStatsOption(Basic, ObserverStatsPanel.Basic, basicPlayerTemplate, () => DisplayStats(BasicStats, modData)), CreateStatsOption(Basic, ObserverStatsPanel.Basic, basicPlayerTemplate, () => DisplayStats(BasicStats)),
CreateStatsOption(Economy, ObserverStatsPanel.Economy, economyPlayerTemplate, () => DisplayStats(EconomyStats, modData)), CreateStatsOption(Economy, ObserverStatsPanel.Economy, economyPlayerTemplate, () => DisplayStats(EconomyStats)),
CreateStatsOption(Production, ObserverStatsPanel.Production, productionPlayerTemplate, () => DisplayStats(ProductionStats, modData)), CreateStatsOption(Production, ObserverStatsPanel.Production, productionPlayerTemplate, () => DisplayStats(ProductionStats)),
CreateStatsOption(SupportPowers, ObserverStatsPanel.SupportPowers, supportPowersPlayerTemplate, () => DisplayStats(SupportPowerStats, modData)), CreateStatsOption(SupportPowers, ObserverStatsPanel.SupportPowers, supportPowersPlayerTemplate, () => DisplayStats(SupportPowerStats)),
CreateStatsOption(Combat, ObserverStatsPanel.Combat, combatPlayerTemplate, () => DisplayStats(CombatStats, modData)), CreateStatsOption(Combat, ObserverStatsPanel.Combat, combatPlayerTemplate, () => DisplayStats(CombatStats)),
CreateStatsOption(Army, ObserverStatsPanel.Army, armyPlayerTemplate, () => DisplayStats(ArmyStats, modData)), CreateStatsOption(Army, ObserverStatsPanel.Army, armyPlayerTemplate, () => DisplayStats(ArmyStats)),
CreateStatsOption(EarningsGraph, ObserverStatsPanel.Graph, null, () => IncomeGraph()), CreateStatsOption(EarningsGraph, ObserverStatsPanel.Graph, null, () => IncomeGraph()),
CreateStatsOption(ArmyGraph, ObserverStatsPanel.ArmyGraph, null, () => ArmyValueGraph()), CreateStatsOption(ArmyGraph, ObserverStatsPanel.ArmyGraph, null, () => ArmyValueGraph()),
}; };
@@ -265,7 +265,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
(p.PlayerActor.TraitOrDefault<PlayerStatistics>() ?? new PlayerStatistics(p.PlayerActor)).ArmySamples.Select(s => (float)s))); (p.PlayerActor.TraitOrDefault<PlayerStatistics>() ?? new PlayerStatistics(p.PlayerActor)).ArmySamples.Select(s => (float)s)));
} }
void DisplayStats(Func<Player, ScrollItemWidget> createItem, ModData modData) void DisplayStats(Func<Player, ScrollItemWidget> createItem)
{ {
foreach (var team in teams) foreach (var team in teams)
{ {
@@ -275,8 +275,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
tt.IgnoreMouseOver = true; tt.IgnoreMouseOver = true;
var teamLabel = tt.Get<LabelWidget>("TEAM"); var teamLabel = tt.Get<LabelWidget>("TEAM");
var teamText = team.Key > 0 ? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", team.Key)) var teamText = team.Key > 0 ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", team.Key))
: modData.Translation.GetString(NoTeam); : TranslationProvider.GetString(NoTeam);
teamLabel.GetText = () => teamText; teamLabel.GetText = () => teamText;
tt.Bounds.Width = teamLabel.Bounds.Width = Game.Renderer.Fonts[tt.Font].Measure(teamText).X; tt.Bounds.Width = teamLabel.Bounds.Width = Game.Renderer.Fonts[tt.Font].Measure(teamText).X;

View File

@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var extraHeightOnDouble = extras.Bounds.Y; var extraHeightOnDouble = extras.Bounds.Y;
var extraHeightOnSingle = extraHeightOnDouble - (doubleHeight - singleHeight); var extraHeightOnSingle = extraHeightOnDouble - (doubleHeight - singleHeight);
var unrevealedTerrain = modData.Translation.GetString(UnrevealedTerrain); var unrevealedTerrain = TranslationProvider.GetString(UnrevealedTerrain);
tooltipContainer.BeforeRender = () => tooltipContainer.BeforeRender = () =>
{ {

View File

@@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var status = new CachedTransform<string, string>(s => WidgetUtils.TruncateText(s, statusLabel.Bounds.Width, statusFont)); var status = new CachedTransform<string, string>(s => WidgetUtils.TruncateText(s, statusLabel.Bounds.Width, statusFont));
statusLabel.GetText = () => status.Update(getStatusText()); 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<LabelWidget>("TITLE").Text = text; panel.Get<LabelWidget>("TITLE").Text = text;
ShowDownloadDialog(); ShowDownloadDialog();
@@ -93,7 +93,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void ShowDownloadDialog() void ShowDownloadDialog()
{ {
getStatusText = () => modData.Translation.GetString(FetchingMirrorList); getStatusText = () => TranslationProvider.GetString(FetchingMirrorList);
progressBar.Indeterminate = true; progressBar.Indeterminate = true;
var retryButton = panel.Get<ButtonWidget>("RETRY_BUTTON"); var retryButton = panel.Get<ButtonWidget>("RETRY_BUTTON");
@@ -107,7 +107,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var dataTotal = 0.0f; var dataTotal = 0.0f;
var mag = 0; var mag = 0;
var dataSuffix = ""; var dataSuffix = "";
var host = downloadHost ?? modData.Translation.GetString(UnknownHost); var host = downloadHost ?? TranslationProvider.GetString(UnknownHost);
if (total < 0) if (total < 0)
{ {
@@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dataReceived = read / (float)(1L << (mag * 10)); dataReceived = read / (float)(1L << (mag * 10));
dataSuffix = SizeSuffixes[mag]; dataSuffix = SizeSuffixes[mag];
getStatusText = () => modData.Translation.GetString(DownloadingFrom, getStatusText = () => TranslationProvider.GetString(DownloadingFrom,
Translation.Arguments("host", host, "received", $"{dataReceived:0.00}", "suffix", dataSuffix)); Translation.Arguments("host", host, "received", $"{dataReceived:0.00}", "suffix", dataSuffix));
progressBar.Indeterminate = true; progressBar.Indeterminate = true;
} }
@@ -126,7 +126,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dataReceived = read / (float)(1L << (mag * 10)); dataReceived = read / (float)(1L << (mag * 10));
dataSuffix = SizeSuffixes[mag]; dataSuffix = SizeSuffixes[mag];
getStatusText = () => modData.Translation.GetString(DownloadingFromProgress, getStatusText = () => TranslationProvider.GetString(DownloadingFromProgress,
Translation.Arguments("host", host, "received", $"{dataReceived:0.00}", "total", $"{dataTotal:0.00}", Translation.Arguments("host", host, "received", $"{dataReceived:0.00}", "total", $"{dataTotal:0.00}",
"suffix", dataSuffix, "progress", progressPercentage)); "suffix", dataSuffix, "progress", progressPercentage));
progressBar.Indeterminate = false; progressBar.Indeterminate = false;
@@ -139,7 +139,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void OnError(string s) => Game.RunAfterTick(() => 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); Log.Write("install", $"Download from {host} failed: " + s);
progressBar.Indeterminate = false; progressBar.Indeterminate = false;
@@ -183,7 +183,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
// Validate integrity // Validate integrity
if (!string.IsNullOrEmpty(download.SHA1)) if (!string.IsNullOrEmpty(download.SHA1))
{ {
getStatusText = () => modData.Translation.GetString(VerifyingArchive); getStatusText = () => TranslationProvider.GetString(VerifyingArchive);
progressBar.Indeterminate = true; progressBar.Indeterminate = true;
var archiveValid = false; var archiveValid = false;
@@ -205,13 +205,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (!archiveValid) if (!archiveValid)
{ {
OnError(modData.Translation.GetString(ArchiveValidationFailed)); OnError(TranslationProvider.GetString(ArchiveValidationFailed));
return; return;
} }
} }
// Automatically extract // Automatically extract
getStatusText = () => modData.Translation.GetString(Extracting); getStatusText = () => TranslationProvider.GetString(Extracting);
progressBar.Indeterminate = true; progressBar.Indeterminate = true;
var extracted = new List<string>(); var extracted = new List<string>();
@@ -231,7 +231,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
continue; 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); Log.Write("install", "Extracting " + kv.Value);
var targetPath = Platform.ResolvePath(kv.Key); var targetPath = Platform.ResolvePath(kv.Key);
Directory.CreateDirectory(Path.GetDirectoryName(targetPath)); Directory.CreateDirectory(Path.GetDirectoryName(targetPath));
@@ -262,7 +262,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
File.Delete(f); File.Delete(f);
} }
OnError(modData.Translation.GetString(ArchiveExtractionFailed)); OnError(TranslationProvider.GetString(ArchiveExtractionFailed));
} }
} }
catch (Exception e) catch (Exception e)
@@ -295,7 +295,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
Log.Write("install", "Mirror selection failed with error:"); Log.Write("install", "Mirror selection failed with error:");
Log.Write("install", e.ToString()); Log.Write("install", e.ToString());
OnError(modData.Translation.GetString(MirrorSelectionFailed)); OnError(TranslationProvider.GetString(MirrorSelectionFailed));
} }
}); });
} }

View File

@@ -159,15 +159,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void DetectContentSources() void DetectContentSources()
{ {
var message = modData.Translation.GetString(DetectingSources); var message = TranslationProvider.GetString(DetectingSources);
ShowProgressbar(modData.Translation.GetString(CheckingSources), () => message); ShowProgressbar(TranslationProvider.GetString(CheckingSources), () => message);
ShowBackRetry(DetectContentSources); ShowBackRetry(DetectContentSources);
new Task(() => new Task(() =>
{ {
foreach (var kv in sources) 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<ISourceResolver>($"{kv.Value.Type.Value}SourceResolver"); var sourceResolver = kv.Value.ObjectCreator.CreateObject<ISourceResolver>($"{kv.Value.Type.Value}SourceResolver");
@@ -187,7 +187,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
Game.RunAfterTick(() => Game.RunAfterTick(() =>
{ {
ShowList(kv.Value, modData.Translation.GetString(ContentPackageInstallation)); ShowList(kv.Value, TranslationProvider.GetString(ContentPackageInstallation));
ShowContinueCancel(() => InstallFromSource(path, kv.Value)); ShowContinueCancel(() => InstallFromSource(path, kv.Value));
}); });
@@ -219,14 +219,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var options = new Dictionary<string, IEnumerable<string>>(); var options = new Dictionary<string, IEnumerable<string>>();
if (gameSources.Any()) if (gameSources.Any())
options.Add(modData.Translation.GetString(GameSources), gameSources); options.Add(TranslationProvider.GetString(GameSources), gameSources);
if (digitalInstalls.Any()) if (digitalInstalls.Any())
options.Add(modData.Translation.GetString(DigitalInstalls), digitalInstalls); options.Add(TranslationProvider.GetString(DigitalInstalls), digitalInstalls);
Game.RunAfterTick(() => Game.RunAfterTick(() =>
{ {
ShowList(modData.Translation.GetString(GameContentNotFound), modData.Translation.GetString(AlternativeContentSources), options); ShowList(TranslationProvider.GetString(GameContentNotFound), TranslationProvider.GetString(AlternativeContentSources), options);
ShowBackRetry(DetectContentSources); ShowBackRetry(DetectContentSources);
}); });
}).Start(); }).Start();
@@ -235,7 +235,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void InstallFromSource(string path, ModContent.ModSource modSource) void InstallFromSource(string path, ModContent.ModSource modSource)
{ {
var message = ""; var message = "";
ShowProgressbar(modData.Translation.GetString(InstallingContent), () => message); ShowProgressbar(TranslationProvider.GetString(InstallingContent), () => message);
ShowDisabledCancel(); ShowDisabledCancel();
new Task(() => new Task(() =>
@@ -286,7 +286,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Game.RunAfterTick(() => Game.RunAfterTick(() =>
{ {
ShowMessage(modData.Translation.GetString(InstallationFailed), modData.Translation.GetString(CheckInstallLog)); ShowMessage(TranslationProvider.GetString(InstallationFailed), TranslationProvider.GetString(CheckInstallLog));
ShowBackRetry(() => InstallFromSource(path, modSource)); ShowBackRetry(() => InstallFromSource(path, modSource));
}); });
} }
@@ -391,11 +391,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void ShowContinueCancel(Action continueAction) void ShowContinueCancel(Action continueAction)
{ {
primaryButton.OnClick = continueAction; primaryButton.OnClick = continueAction;
primaryButton.Text = modData.Translation.GetString(Continue); primaryButton.Text = TranslationProvider.GetString(Continue);
primaryButton.Visible = true; primaryButton.Visible = true;
secondaryButton.OnClick = Ui.CloseWindow; secondaryButton.OnClick = Ui.CloseWindow;
secondaryButton.Text = modData.Translation.GetString(Cancel); secondaryButton.Text = TranslationProvider.GetString(Cancel);
secondaryButton.Visible = true; secondaryButton.Visible = true;
secondaryButton.Disabled = false; secondaryButton.Disabled = false;
Game.RunAfterTick(Ui.ResetTooltips); Game.RunAfterTick(Ui.ResetTooltips);
@@ -404,11 +404,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void ShowBackRetry(Action retryAction) void ShowBackRetry(Action retryAction)
{ {
primaryButton.OnClick = retryAction; primaryButton.OnClick = retryAction;
primaryButton.Text = modData.Translation.GetString(Retry); primaryButton.Text = TranslationProvider.GetString(Retry);
primaryButton.Visible = true; primaryButton.Visible = true;
secondaryButton.OnClick = Ui.CloseWindow; secondaryButton.OnClick = Ui.CloseWindow;
secondaryButton.Text = modData.Translation.GetString(Back); secondaryButton.Text = TranslationProvider.GetString(Back);
secondaryButton.Visible = true; secondaryButton.Visible = true;
secondaryButton.Disabled = false; secondaryButton.Disabled = false;
Game.RunAfterTick(Ui.ResetTooltips); Game.RunAfterTick(Ui.ResetTooltips);

View File

@@ -23,7 +23,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[TranslationReference] [TranslationReference]
const string ManualInstall = "button-manual-install"; const string ManualInstall = "button-manual-install";
readonly ModData modData;
readonly ModContent content; readonly ModContent content;
readonly ScrollPanelWidget scrollPanel; readonly ScrollPanelWidget scrollPanel;
readonly Widget template; readonly Widget template;
@@ -34,9 +33,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
bool sourceAvailable; bool sourceAvailable;
[ObjectCreator.UseCtor] [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; this.content = content;
var panel = widget.Get("CONTENT_PANEL"); var panel = widget.Get("CONTENT_PANEL");
@@ -143,7 +141,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
requiresSourceWidget.IsVisible = () => !installed && !downloadEnabled; requiresSourceWidget.IsVisible = () => !installed && !downloadEnabled;
if (!isSourceAvailable) if (!isSourceAvailable)
{ {
var manualInstall = modData.Translation.GetString(ManualInstall); var manualInstall = TranslationProvider.GetString(ManualInstall);
requiresSourceWidget.GetText = () => manualInstall; requiresSourceWidget.GetText = () => manualInstall;
} }

View File

@@ -35,8 +35,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
this.content = content; this.content = content;
CheckRequiredContentInstalled(); CheckRequiredContentInstalled();
var continueMessage = modData.Translation.GetString(Continue); var continueMessage = TranslationProvider.GetString(Continue);
var quitMessage = modData.Translation.GetString(Quit); var quitMessage = TranslationProvider.GetString(Quit);
var panel = widget.Get("CONTENT_PROMPT_PANEL"); var panel = widget.Get("CONTENT_PROMPT_PANEL");
var headerTemplate = panel.Get<LabelWidget>("HEADER_TEMPLATE"); var headerTemplate = panel.Get<LabelWidget>("HEADER_TEMPLATE");

View File

@@ -42,8 +42,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var ds = Game.Settings.Graphics; var ds = Game.Settings.Graphics;
var gs = Game.Settings.Game; var gs = Game.Settings.Game;
classic = modData.Translation.GetString(Classic); classic = TranslationProvider.GetString(Classic);
modern = modData.Translation.GetString(Modern); modern = TranslationProvider.GetString(Modern);
var escPressed = false; var escPressed = false;
var nameTextfield = widget.Get<TextFieldWidget>("PLAYERNAME"); var nameTextfield = widget.Get<TextFieldWidget>("PLAYERNAME");
@@ -83,7 +83,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
mouseControlDescModern.IsVisible = () => !gs.UseClassicMouseStyle; mouseControlDescModern.IsVisible = () => !gs.UseClassicMouseStyle;
var mouseControlDropdown = widget.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN"); var mouseControlDropdown = widget.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN");
mouseControlDropdown.OnMouseDown = _ => InputSettingsLogic.ShowMouseControlDropdown(modData, mouseControlDropdown, gs); mouseControlDropdown.OnMouseDown = _ => InputSettingsLogic.ShowMouseControlDropdown(mouseControlDropdown, gs);
mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern; mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern;
foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern }) foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern })

View File

@@ -20,9 +20,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
const string KickClient = "dialog-kick-client.prompt"; const string KickClient = "dialog-kick-client.prompt";
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public KickClientLogic(ModData modData, Widget widget, string clientName, Action<bool> okPressed, Action cancelPressed) public KickClientLogic(Widget widget, string clientName, Action<bool> okPressed, Action cancelPressed)
{ {
var kickMessage = modData.Translation.GetString(KickClient, Translation.Arguments("player", clientName)); var kickMessage = TranslationProvider.GetString(KickClient, Translation.Arguments("player", clientName));
widget.Get<LabelWidget>("TITLE").GetText = () => kickMessage; widget.Get<LabelWidget>("TITLE").GetText = () => kickMessage;
var tempBan = false; var tempBan = false;

View File

@@ -20,9 +20,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
const string KickSpectators = "dialog-kick-spectators.prompt"; const string KickSpectators = "dialog-kick-spectators.prompt";
[ObjectCreator.UseCtor] [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<LabelWidget>("TEXT").GetText = () => kickMessage; widget.Get<LabelWidget>("TEXT").GetText = () => kickMessage;
widget.Get<ButtonWidget>("OK_BUTTON").OnClick = () => widget.Get<ButtonWidget>("OK_BUTTON").OnClick = () =>

View File

@@ -261,7 +261,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
new DropDownOption() new DropDownOption()
{ {
Title = modData.Translation.GetString(Add), Title = TranslationProvider.GetString(Add),
IsSelected = () => false, IsSelected = () => false,
OnClick = () => OnClick = () =>
{ {
@@ -280,7 +280,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
botOptions.Add(new DropDownOption() botOptions.Add(new DropDownOption()
{ {
Title = modData.Translation.GetString(Remove), Title = TranslationProvider.GetString(Remove),
IsSelected = () => false, IsSelected = () => false,
OnClick = () => 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; 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 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, IsSelected = () => false,
OnClick = () => orderManager.IssueOrder(Order.Command($"assignteams {d}")) OnClick = () => orderManager.IssueOrder(Order.Command($"assignteams {d}"))
}).ToList(); }).ToList();
@@ -311,7 +311,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
teamOptions.Add(new DropDownOption teamOptions.Add(new DropDownOption
{ {
Title = modData.Translation.GetString(HumanVsBots), Title = TranslationProvider.GetString(HumanVsBots),
IsSelected = () => false, IsSelected = () => false,
OnClick = () => orderManager.IssueOrder(Order.Command("assignteams 1")) OnClick = () => orderManager.IssueOrder(Order.Command("assignteams 1"))
}); });
@@ -319,12 +319,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
teamOptions.Add(new DropDownOption teamOptions.Add(new DropDownOption
{ {
Title = modData.Translation.GetString(FreeForAll), Title = TranslationProvider.GetString(FreeForAll),
IsSelected = () => false, IsSelected = () => false,
OnClick = () => orderManager.IssueOrder(Order.Command("assignteams 0")) 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) ScrollItemWidget SetupItem(DropDownOption option, ScrollItemWidget template)
@@ -443,7 +443,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
disconnectButton.OnClick = () => { Ui.CloseWindow(); onExit(); }; disconnectButton.OnClick = () => { Ui.CloseWindow(); onExit(); };
if (skirmishMode) if (skirmishMode)
disconnectButton.Text = modData.Translation.GetString(Back); disconnectButton.Text = TranslationProvider.GetString(Back);
if (logicArgs.TryGetValue("ChatTemplates", out var templateIds)) if (logicArgs.TryGetValue("ChatTemplates", out var templateIds))
{ {
@@ -455,8 +455,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
var chatMode = lobby.Get<ButtonWidget>("CHAT_MODE"); var chatMode = lobby.Get<ButtonWidget>("CHAT_MODE");
var team = modData.Translation.GetString(TeamChat); var team = TranslationProvider.GetString(TeamChat);
var all = modData.Translation.GetString(GeneralChat); var all = TranslationProvider.GetString(GeneralChat);
chatMode.GetText = () => teamChat ? team : all; chatMode.GetText = () => teamChat ? team : all;
chatMode.OnClick = () => teamChat ^= true; chatMode.OnClick = () => teamChat ^= true;
chatMode.IsDisabled = () => disableTeamChat || !chatEnabled; chatMode.IsDisabled = () => disableTeamChat || !chatEnabled;
@@ -497,8 +497,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
chatTextField.OnEscKey = _ => chatTextField.YieldKeyboardFocus(); chatTextField.OnEscKey = _ => chatTextField.YieldKeyboardFocus();
chatAvailableIn = new CachedTransform<int, string>(x => modData.Translation.GetString(ChatAvailability, Translation.Arguments("seconds", x))); chatAvailableIn = new CachedTransform<int, string>(x => TranslationProvider.GetString(ChatAvailability, Translation.Arguments("seconds", x)));
chatDisabled = modData.Translation.GetString(ChatDisabled); chatDisabled = TranslationProvider.GetString(ChatDisabled);
lobbyChatPanel = lobby.Get<ScrollPanelWidget>("CHAT_DISPLAY"); lobbyChatPanel = lobby.Get<ScrollPanelWidget>("CHAT_DISPLAY");
lobbyChatPanel.RemoveChildren(); lobbyChatPanel.RemoveChildren();

View File

@@ -23,7 +23,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[TranslationReference] [TranslationReference]
const string NotAvailable = "label-not-available"; const string NotAvailable = "label-not-available";
readonly ModData modData;
readonly ScrollPanelWidget panel; readonly ScrollPanelWidget panel;
readonly Widget optionsContainer; readonly Widget optionsContainer;
readonly Widget checkboxRowTemplate; readonly Widget checkboxRowTemplate;
@@ -36,9 +35,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
MapPreview mapPreview; MapPreview mapPreview;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
internal LobbyOptionsLogic(ModData modData, Widget widget, OrderManager orderManager, Func<MapPreview> getMap, Func<bool> configurationDisabled) internal LobbyOptionsLogic(Widget widget, OrderManager orderManager, Func<MapPreview> getMap, Func<bool> configurationDisabled)
{ {
this.modData = modData;
this.getMap = getMap; this.getMap = getMap;
this.orderManager = orderManager; this.orderManager = orderManager;
this.configurationDisabled = configurationDisabled; this.configurationDisabled = configurationDisabled;
@@ -143,7 +141,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var getOptionLabel = new CachedTransform<string, string>(id => var getOptionLabel = new CachedTransform<string, string>(id =>
{ {
if (id == null || !option.Values.TryGetValue(id, out var value)) if (id == null || !option.Values.TryGetValue(id, out var value))
return modData.Translation.GetString(NotAvailable); return TranslationProvider.GetString(NotAvailable);
return value; return value;
}); });

View File

@@ -55,12 +55,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public static void ShowSlotDropDown(DropDownButtonWidget dropdown, Session.Slot slot, public static void ShowSlotDropDown(DropDownButtonWidget dropdown, Session.Slot slot,
Session.Client client, OrderManager orderManager, MapPreview map, ModData modData) Session.Client client, OrderManager orderManager, MapPreview map, ModData modData)
{ {
var open = modData.Translation.GetString(Open); var open = TranslationProvider.GetString(Open);
var closed = modData.Translation.GetString(Closed); var closed = TranslationProvider.GetString(Closed);
var options = new Dictionary<string, IEnumerable<SlotDropDownOption>> var options = new Dictionary<string, IEnumerable<SlotDropDownOption>>
{ {
{ {
modData.Translation.GetString(Slot), new List<SlotDropDownOption> TranslationProvider.GetString(Slot), new List<SlotDropDownOption>
{ {
new SlotDropDownOption(open, "slot_open " + slot.PlayerReference, () => !slot.Closed && client == null), new SlotDropDownOption(open, "slot_open " + slot.PlayerReference, () => !slot.Closed && client == null),
new SlotDropDownOption(closed, "slot_close " + slot.PlayerReference, () => slot.Closed) 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) 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, WidgetUtils.TruncateText(name, slot.Bounds.Width - slot.Bounds.Height - slot.LeftMargin - slot.RightMargin,
Game.Renderer.Fonts[slot.Font])); Game.Renderer.Fonts[slot.Font]));
var closed = modData.Translation.GetString(Closed); var closed = TranslationProvider.GetString(Closed);
var open = modData.Translation.GetString(Open); var open = TranslationProvider.GetString(Open);
slot.GetText = () => truncated.Update(c != null ? c.Name : s.Closed ? closed : open); slot.GetText = () => truncated.Update(c != null ? c.Name : s.Closed ? closed : open);
slot.OnMouseDown = _ => ShowSlotDropDown(slot, s, c, orderManager, map, modData); slot.OnMouseDown = _ => ShowSlotDropDown(slot, s, c, orderManager, map, modData);
@@ -452,8 +452,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var name = parent.Get<LabelWidget>("NAME"); var name = parent.Get<LabelWidget>("NAME");
name.IsVisible = () => true; name.IsVisible = () => true;
name.GetText = () => c != null ? c.Name : s.Closed name.GetText = () => c != null ? c.Name : s.Closed
? modData.Translation.GetString(Closed) ? TranslationProvider.GetString(Closed)
: modData.Translation.GetString(Open); : TranslationProvider.GetString(Open);
// Ensure Slot selector (if present) is hidden // Ensure Slot selector (if present) is hidden
HideChildWidget(parent, "SLOT_OPTIONS"); HideChildWidget(parent, "SLOT_OPTIONS");

View File

@@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return map.Status == MapStatus.Available && isPlayable; 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"); 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; 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"); 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; 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"); var download = widget.GetOrNull("MAP_DOWNLOADABLE");
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
download.IsVisible = () => getMap().Map.Status == MapStatus.DownloadAvailable; 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<ButtonWidget>("MAP_INSTALL"); var install = download.GetOrNull<ButtonWidget>("MAP_INSTALL");
if (install != null) if (install != null)
@@ -117,7 +117,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return map.Status != MapStatus.Available && map.Status != MapStatus.DownloadAvailable; 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"); var statusSearching = progress.GetOrNull("MAP_STATUS_SEARCHING");
if (statusSearching != null) if (statusSearching != null)
@@ -152,13 +152,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
var (map, _) = getMap(); var (map, _) = getMap();
if (map.DownloadBytes == 0) if (map.DownloadBytes == 0)
return modData.Translation.GetString(Connecting); return TranslationProvider.GetString(Connecting);
// Server does not provide the total file length // Server does not provide the total file length
if (map.DownloadPercentage == 0) 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 retry.GetText = () => getMap().Map.Status == MapStatus.DownloadError
? modData.Translation.GetString(RetryInstall) ? TranslationProvider.GetString(RetryInstall)
: modData.Translation.GetString(RetrySearch); : TranslationProvider.GetString(RetrySearch);
} }
var progressbar = progress.GetOrNull<ProgressBarWidget>("MAP_PROGRESSBAR"); var progressbar = progress.GetOrNull<ProgressBarWidget>("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, Func<(MapPreview Map, Session.MapStatus Status)> getMap,
Action<MapPreviewWidget, MapPreview, MouseInput> onMouseDown, Action<MapPreviewWidget, MapPreview, MouseInput> onMouseDown,
Func<Dictionary<int, SpawnOccupant>> getSpawnOccupants, Func<Dictionary<int, SpawnOccupant>> getSpawnOccupants,
@@ -256,7 +256,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
var font = Game.Renderer.Fonts[authorLabel.Font]; var font = Game.Renderer.Fonts[authorLabel.Font];
var author = new CachedTransform<MapPreview, string>( var author = new CachedTransform<MapPreview, string>(
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); authorLabel.GetText = () => author.Update(getMap().Map);
} }
} }

View File

@@ -47,9 +47,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var labelText = ""; var labelText = "";
string playerFaction = null; string playerFaction = null;
var playerTeam = -1; var playerTeam = -1;
teamMessage = new CachedTransform<int, string>(t => modData.Translation.GetString(TeamNumber, Translation.Arguments("team", t))); teamMessage = new CachedTransform<int, string>(t => TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", t)));
var disabledSpawn = modData.Translation.GetString(DisabledSpawn); var disabledSpawn = TranslationProvider.GetString(DisabledSpawn);
var availableSpawn = modData.Translation.GetString(AvailableSpawn); var availableSpawn = TranslationProvider.GetString(AvailableSpawn);
tooltipContainer.BeforeRender = () => tooltipContainer.BeforeRender = () =>
{ {

View File

@@ -221,7 +221,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
newsPanel.RemoveChild(newsTemplate); newsPanel.RemoveChild(newsTemplate);
newsStatus = newsPanel.Get<LabelWidget>("NEWS_STATUS"); newsStatus = newsPanel.Get<LabelWidget>("NEWS_STATUS");
SetNewsStatus(modData.Translation.GetString(LoadingNews)); SetNewsStatus(TranslationProvider.GetString(LoadingNews));
} }
Game.OnRemoteDirectConnect += OnRemoteDirectConnect; Game.OnRemoteDirectConnect += OnRemoteDirectConnect;
@@ -333,7 +333,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
catch (Exception e) catch (Exception e)
{ {
Game.RunAfterTick(() => // run on the main thread 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) catch (Exception ex)
{ {
SetNewsStatus(modData.Translation.GetString(NewsParsingFailed, Translation.Arguments("message", ex.Message))); SetNewsStatus(TranslationProvider.GetString(NewsParsingFailed, Translation.Arguments("message", ex.Message)));
} }
return null; return null;

View File

@@ -100,9 +100,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
this.modData = modData; this.modData = modData;
this.onSelect = onSelect; this.onSelect = onSelect;
allMaps = modData.Translation.GetString(AllMaps); allMaps = TranslationProvider.GetString(AllMaps);
orderByPlayer = modData.Translation.GetString(OrderMapsByPlayers); orderByPlayer = TranslationProvider.GetString(OrderMapsByPlayers);
orderByDate = modData.Translation.GetString(OrderMapsByDate); orderByDate = TranslationProvider.GetString(OrderMapsByDate);
var approving = new Action(() => var approving = new Action(() =>
{ {
@@ -273,7 +273,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
var item = categories.FirstOrDefault(m => m.Category == category); var item = categories.FirstOrDefault(m => m.Category == category);
if (item == default((string, int))) if (item == default((string, int)))
item.Category = modData.Translation.GetString(NoMatches); item.Category = TranslationProvider.GetString(NoMatches);
return ShowItem(item); return ShowItem(item);
}; };
@@ -363,23 +363,23 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (type != null) if (type != null)
details = type + " "; details = type + " ";
details += modData.Translation.GetString(Players, Translation.Arguments("players", preview.PlayerCount)); details += TranslationProvider.GetString(Players, Translation.Arguments("players", preview.PlayerCount));
detailsWidget.GetText = () => details; detailsWidget.GetText = () => details;
} }
var authorWidget = item.GetOrNull<LabelWithTooltipWidget>("AUTHOR"); var authorWidget = item.GetOrNull<LabelWithTooltipWidget>("AUTHOR");
if (authorWidget != null && !string.IsNullOrEmpty(preview.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<LabelWidget>("SIZE"); var sizeWidget = item.GetOrNull<LabelWidget>("SIZE");
if (sizeWidget != null) if (sizeWidget != null)
{ {
var size = preview.Bounds.Width + "x" + preview.Bounds.Height; var size = preview.Bounds.Width + "x" + preview.Bounds.Height;
var numberPlayableCells = preview.Bounds.Width * preview.Bounds.Height; var numberPlayableCells = preview.Bounds.Width * preview.Bounds.Height;
if (numberPlayableCells >= 120 * 120) size += " " + modData.Translation.GetString(MapSizeHuge); if (numberPlayableCells >= 120 * 120) size += " " + TranslationProvider.GetString(MapSizeHuge);
else if (numberPlayableCells >= 90 * 90) size += " " + modData.Translation.GetString(MapSizeLarge); else if (numberPlayableCells >= 90 * 90) size += " " + TranslationProvider.GetString(MapSizeLarge);
else if (numberPlayableCells >= 60 * 60) size += " " + modData.Translation.GetString(MapSizeMedium); else if (numberPlayableCells >= 60 * 60) size += " " + TranslationProvider.GetString(MapSizeMedium);
else size += " " + modData.Translation.GetString(MapSizeSmall); else size += " " + TranslationProvider.GetString(MapSizeSmall);
sizeWidget.GetText = () => size; sizeWidget.GetText = () => size;
} }
@@ -407,7 +407,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
catch (Exception ex) 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()); Log.Write("debug", ex.ToString());
} }

View File

@@ -314,13 +314,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var speeds = modData.Manifest.Get<GameSpeeds>().Speeds; var speeds = modData.Manifest.Get<GameSpeeds>().Speeds;
gameSpeed = "default"; gameSpeed = "default";
var speedText = new CachedTransform<string, string>(s => modData.Translation.GetString(speeds[s].Name)); var speedText = new CachedTransform<string, string>(s => TranslationProvider.GetString(speeds[s].Name));
gameSpeedButton.GetText = () => speedText.Update(gameSpeed); gameSpeedButton.GetText = () => speedText.Update(gameSpeed);
gameSpeedButton.OnMouseDown = _ => gameSpeedButton.OnMouseDown = _ =>
{ {
var options = speeds.Select(s => new DropDownOption var options = speeds.Select(s => new DropDownOption
{ {
Title = modData.Translation.GetString(s.Value.Name), Title = TranslationProvider.GetString(s.Value.Name),
IsSelected = () => gameSpeed == s.Key, IsSelected = () => gameSpeed == s.Key,
OnClick = () => gameSpeed = s.Key OnClick = () => gameSpeed = s.Key
}); });

View File

@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
panel.Get<LabelWidget>("MUTE_LABEL").GetText = () => panel.Get<LabelWidget>("MUTE_LABEL").GetText = () =>
{ {
if (Game.Settings.Sound.Mute) if (Game.Settings.Sound.Mute)
return modData.Translation.GetString(SoundMuted); return TranslationProvider.GetString(SoundMuted);
return ""; return "";
}; };
@@ -101,7 +101,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return $"{minutes:D2}:{seconds:D2} / {totalMinutes:D2}:{totalSeconds:D2}"; return $"{minutes:D2}:{seconds:D2} / {totalMinutes:D2}:{totalSeconds:D2}";
}; };
var noSongPlaying = modData.Translation.GetString(NoSongPlaying); var noSongPlaying = TranslationProvider.GetString(NoSongPlaying);
var musicTitle = panel.GetOrNull<LabelWidget>("TITLE_LABEL"); var musicTitle = panel.GetOrNull<LabelWidget>("TITLE_LABEL");
if (musicTitle != null) if (musicTitle != null)
musicTitle.GetText = () => currentSong != null ? currentSong.Title : noSongPlaying; musicTitle.GetText = () => currentSong != null ? currentSong.Title : noSongPlaying;

View File

@@ -24,14 +24,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[TranslationReference] [TranslationReference]
const string AudioUnmuted = "label-audio-unmuted"; const string AudioUnmuted = "label-audio-unmuted";
readonly ModData modData;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public MuteHotkeyLogic(Widget widget, ModData modData, Dictionary<string, MiniYaml> logicArgs) public MuteHotkeyLogic(Widget widget, ModData modData, Dictionary<string, MiniYaml> logicArgs)
: base(widget, modData, "MuteAudioKey", "GLOBAL_KEYHANDLER", logicArgs) : base(widget, modData, "MuteAudioKey", "GLOBAL_KEYHANDLER", logicArgs) { }
{
this.modData = modData;
}
protected override bool OnHotkeyActivated(KeyInput e) protected override bool OnHotkeyActivated(KeyInput e)
{ {
@@ -40,12 +35,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (Game.Settings.Sound.Mute) if (Game.Settings.Sound.Mute)
{ {
Game.Sound.MuteAudio(); Game.Sound.MuteAudio();
TextNotificationsManager.AddFeedbackLine(modData.Translation.GetString(AudioMuted)); TextNotificationsManager.AddFeedbackLine(TranslationProvider.GetString(AudioMuted));
} }
else else
{ {
Game.Sound.UnmuteAudio(); Game.Sound.UnmuteAudio();
TextNotificationsManager.AddFeedbackLine(modData.Translation.GetString(AudioUnmuted)); TextNotificationsManager.AddFeedbackLine(TranslationProvider.GetString(AudioUnmuted));
} }
return true; return true;

View File

@@ -160,7 +160,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var profileWidth = 0; var profileWidth = 0;
var maxProfileWidth = widget.Bounds.Width; 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; var messageWidth = messageFont.Measure(messageText).X + 2 * message.Bounds.Left;
Task.Run(async () => Task.Run(async () =>
@@ -249,7 +249,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
if (profile == null) if (profile == null)
{ {
messageText = modData.Translation.GetString(LoadingPlayerProfileFailed); messageText = TranslationProvider.GetString(LoadingPlayerProfileFailed);
messageWidth = messageFont.Measure(messageText).X + 2 * message.Bounds.Left; messageWidth = messageFont.Measure(messageText).X + 2 * message.Bounds.Left;
header.Bounds.Width = widget.Bounds.Width = messageWidth; header.Bounds.Width = widget.Bounds.Width = messageWidth;
} }

View File

@@ -179,7 +179,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}); });
var replayDuration = new CachedTransform<ReplayMetadata, string>(r => var replayDuration = new CachedTransform<ReplayMetadata, string>(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<LabelWidget>("DURATION").GetText = () => replayDuration.Update(selectedReplay); panel.Get<LabelWidget>("DURATION").GetText = () => replayDuration.Update(selectedReplay);
SetupFilters(); SetupFilters();
@@ -231,8 +231,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var options = new List<(GameType GameType, string Text)> var options = new List<(GameType GameType, string Text)>
{ {
(GameType.Any, ddb.GetText()), (GameType.Any, ddb.GetText()),
(GameType.Singleplayer, modData.Translation.GetString(Singleplayer)), (GameType.Singleplayer, TranslationProvider.GetString(Singleplayer)),
(GameType.Multiplayer, modData.Translation.GetString(Multiplayer)) (GameType.Multiplayer, TranslationProvider.GetString(Multiplayer))
}; };
var lookup = options.ToDictionary(kvp => kvp.GameType, kvp => kvp.Text); 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)> var options = new List<(DateType DateType, string Text)>
{ {
(DateType.Any, ddb.GetText()), (DateType.Any, ddb.GetText()),
(DateType.Today, modData.Translation.GetString(Today)), (DateType.Today, TranslationProvider.GetString(Today)),
(DateType.LastWeek, modData.Translation.GetString(LastWeek)), (DateType.LastWeek, TranslationProvider.GetString(LastWeek)),
(DateType.LastFortnight, modData.Translation.GetString(LastFortnight)), (DateType.LastFortnight, TranslationProvider.GetString(LastFortnight)),
(DateType.LastMonth, modData.Translation.GetString(LastMonth)) (DateType.LastMonth, TranslationProvider.GetString(LastMonth))
}; };
var lookup = options.ToDictionary(kvp => kvp.DateType, kvp => kvp.Text); 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)> var options = new List<(DurationType DurationType, string Text)>
{ {
(DurationType.Any, ddb.GetText()), (DurationType.Any, ddb.GetText()),
(DurationType.VeryShort, modData.Translation.GetString(ReplayDurationVeryShort)), (DurationType.VeryShort, TranslationProvider.GetString(ReplayDurationVeryShort)),
(DurationType.Short, modData.Translation.GetString(ReplayDurationShort)), (DurationType.Short, TranslationProvider.GetString(ReplayDurationShort)),
(DurationType.Medium, modData.Translation.GetString(ReplayDurationMedium)), (DurationType.Medium, TranslationProvider.GetString(ReplayDurationMedium)),
(DurationType.Long, modData.Translation.GetString(ReplayDurationLong)) (DurationType.Long, TranslationProvider.GetString(ReplayDurationLong))
}; };
var lookup = options.ToDictionary(kvp => kvp.DurationType, kvp => kvp.Text); 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)> var options = new List<(WinState WinState, string Text)>
{ {
(WinState.Undefined, ddb.GetText()), (WinState.Undefined, ddb.GetText()),
(WinState.Lost, modData.Translation.GetString(Defeat)), (WinState.Lost, TranslationProvider.GetString(Defeat)),
(WinState.Won, modData.Translation.GetString(Victory)) (WinState.Won, TranslationProvider.GetString(Victory))
}; };
var lookup = options.ToDictionary(kvp => kvp.WinState, kvp => kvp.Text); var lookup = options.ToDictionary(kvp => kvp.WinState, kvp => kvp.Text);
@@ -580,7 +580,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
catch (Exception ex) 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()); Log.Write("debug", ex.ToString());
return; return;
} }
@@ -716,9 +716,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var noTeams = players.Count() == 1; var noTeams = players.Count() == 1;
foreach (var p in players) foreach (var p in players)
{ {
var label = noTeams ? modData.Translation.GetString(Players) : p.Key > 0 var label = noTeams ? TranslationProvider.GetString(Players) : p.Key > 0
? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", p.Key)) ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", p.Key))
: modData.Translation.GetString(NoTeam); : TranslationProvider.GetString(NoTeam);
teams.Add(label, p); teams.Add(label, p);
} }

View File

@@ -189,13 +189,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (advertiseOnline) if (advertiseOnline)
{ {
noticesLabelA.Text = modData.Translation.GetString(InternetServerNatA) + " "; noticesLabelA.Text = TranslationProvider.GetString(InternetServerNatA) + " ";
var aWidth = Game.Renderer.Fonts[noticesLabelA.Font].Measure(noticesLabelA.Text).X; var aWidth = Game.Renderer.Fonts[noticesLabelA.Font].Measure(noticesLabelA.Text).X;
noticesLabelA.Bounds.Width = aWidth; noticesLabelA.Bounds.Width = aWidth;
noticesLabelB.Text = Nat.Status == NatStatus.Enabled ? modData.Translation.GetString(InternetServerNatBenabled) : noticesLabelB.Text = Nat.Status == NatStatus.Enabled ? TranslationProvider.GetString(InternetServerNatBenabled) :
Nat.Status == NatStatus.NotSupported ? modData.Translation.GetString(InternetServerNatBnotSupported) Nat.Status == NatStatus.NotSupported ? TranslationProvider.GetString(InternetServerNatBnotSupported)
: modData.Translation.GetString(InternetServerNatBdisabled); : TranslationProvider.GetString(InternetServerNatBdisabled);
noticesLabelB.TextColor = Nat.Status == NatStatus.Enabled ? ChromeMetrics.Get<Color>("NoticeSuccessColor") : noticesLabelB.TextColor = Nat.Status == NatStatus.Enabled ? ChromeMetrics.Get<Color>("NoticeSuccessColor") :
Nat.Status == NatStatus.NotSupported ? ChromeMetrics.Get<Color>("NoticeErrorColor") : Nat.Status == NatStatus.NotSupported ? ChromeMetrics.Get<Color>("NoticeErrorColor") :
@@ -206,13 +206,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
noticesLabelB.Bounds.Width = bWidth; noticesLabelB.Bounds.Width = bWidth;
noticesLabelB.Visible = true; noticesLabelB.Visible = true;
noticesLabelC.Text = modData.Translation.GetString(InternetServerNatC); noticesLabelC.Text = TranslationProvider.GetString(InternetServerNatC);
noticesLabelC.Bounds.X = noticesLabelB.Bounds.Right; noticesLabelC.Bounds.X = noticesLabelB.Bounds.Right;
noticesLabelC.Visible = true; noticesLabelC.Visible = true;
} }
else else
{ {
noticesLabelA.Text = modData.Translation.GetString(LocalServer); noticesLabelA.Text = TranslationProvider.GetString(LocalServer);
noticesLabelB.Visible = false; noticesLabelB.Visible = false;
noticesLabelC.Visible = false; noticesLabelC.Visible = false;
} }
@@ -248,13 +248,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
} }
catch (System.Net.Sockets.SocketException e) 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) // AddressAlreadyInUse (WSAEADDRINUSE)
if (e.ErrorCode == 10048) if (e.ErrorCode == 10048)
message += "\n" + modData.Translation.GetString(ServerCreationFailedPortUsed); message += "\n" + TranslationProvider.GetString(ServerCreationFailedPortUsed);
else else
message += $"\n" + modData.Translation.GetString(ServerCreationFailedError, message += $"\n" + TranslationProvider.GetString(ServerCreationFailedError,
Translation.Arguments("message", e.Message, "code", e.ErrorCode)); Translation.Arguments("message", e.Message, "code", e.ErrorCode));
ConfirmationDialogs.ButtonPrompt(modData, ServerCreationFailedTitle, message, ConfirmationDialogs.ButtonPrompt(modData, ServerCreationFailedTitle, message,

View File

@@ -145,8 +145,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
switch (searchStatus) switch (searchStatus)
{ {
case SearchStatus.Failed: return modData.Translation.GetString(SearchStatusFailed); case SearchStatus.Failed: return TranslationProvider.GetString(SearchStatusFailed);
case SearchStatus.NoGames: return modData.Translation.GetString(SearchStatusNoGames); case SearchStatus.NoGames: return TranslationProvider.GetString(SearchStatusNoGames);
default: return ""; default: return "";
} }
} }
@@ -157,22 +157,22 @@ namespace OpenRA.Mods.Common.Widgets.Logic
this.modData = modData; this.modData = modData;
this.onJoin = onJoin; this.onJoin = onJoin;
playing = modData.Translation.GetString(Playing); playing = TranslationProvider.GetString(Playing);
waiting = modData.Translation.GetString(Waiting); waiting = TranslationProvider.GetString(Waiting);
noServerSelected = modData.Translation.GetString(NoServerSelected); noServerSelected = TranslationProvider.GetString(NoServerSelected);
mapStatusSearching = modData.Translation.GetString(MapStatusSearching); mapStatusSearching = TranslationProvider.GetString(MapStatusSearching);
mapClassificationUnknown = modData.Translation.GetString(MapClassificationUnknown); mapClassificationUnknown = TranslationProvider.GetString(MapClassificationUnknown);
players = new CachedTransform<int, string>(i => modData.Translation.GetString(PlayersLabel, Translation.Arguments("players", i))); players = new CachedTransform<int, string>(i => TranslationProvider.GetString(PlayersLabel, Translation.Arguments("players", i)));
bots = new CachedTransform<int, string>(i => modData.Translation.GetString(BotsLabel, Translation.Arguments("bots", i))); bots = new CachedTransform<int, string>(i => TranslationProvider.GetString(BotsLabel, Translation.Arguments("bots", i)));
spectators = new CachedTransform<int, string>(i => modData.Translation.GetString(SpectatorsLabel, Translation.Arguments("spectators", i))); spectators = new CachedTransform<int, string>(i => TranslationProvider.GetString(SpectatorsLabel, Translation.Arguments("spectators", i)));
minutes = new CachedTransform<double, string>(i => modData.Translation.GetString(InProgress, Translation.Arguments("minutes", i))); minutes = new CachedTransform<double, string>(i => TranslationProvider.GetString(InProgress, Translation.Arguments("minutes", i)));
passwordProtected = modData.Translation.GetString(PasswordProtected); passwordProtected = TranslationProvider.GetString(PasswordProtected);
waitingForPlayers = modData.Translation.GetString(WaitingForPlayers); waitingForPlayers = TranslationProvider.GetString(WaitingForPlayers);
serverShuttingDown = modData.Translation.GetString(ServerShuttingDown); serverShuttingDown = TranslationProvider.GetString(ServerShuttingDown);
unknownServerState = modData.Translation.GetString(UnknownServerState); unknownServerState = TranslationProvider.GetString(UnknownServerState);
services = modData.Manifest.Get<WebServices>(); services = modData.Manifest.Get<WebServices>();
@@ -318,7 +318,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var playersLabel = widget.GetOrNull<LabelWidget>("PLAYER_COUNT"); var playersLabel = widget.GetOrNull<LabelWidget>("PLAYER_COUNT");
if (playersLabel != null) if (playersLabel != null)
{ {
var playersText = new CachedTransform<int, string>(p => modData.Translation.GetString(PlayersOnline, Translation.Arguments("players", p))); var playersText = new CachedTransform<int, string>(p => TranslationProvider.GetString(PlayersOnline, Translation.Arguments("players", p)));
playersLabel.IsVisible = () => playerCount != 0; playersLabel.IsVisible = () => playerCount != 0;
playersLabel.GetText = () => playersText.Update(playerCount); playersLabel.GetText = () => playersText.Update(playerCount);
} }
@@ -578,14 +578,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var noTeams = players.Count() == 1; var noTeams = players.Count() == 1;
foreach (var p in players) foreach (var p in players)
{ {
var label = noTeams ? modData.Translation.GetString(Players) : p.Key > 0 var label = noTeams ? TranslationProvider.GetString(Players) : p.Key > 0
? modData.Translation.GetString(TeamNumber, Translation.Arguments("team", p.Key)) ? TranslationProvider.GetString(TeamNumber, Translation.Arguments("team", p.Key))
: modData.Translation.GetString(NoTeam); : TranslationProvider.GetString(NoTeam);
teams.Add(label, p); teams.Add(label, p);
} }
if (server.Clients.Any(c => c.IsSpectator)) 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<FactionInfo>(); var factionInfo = modData.DefaultRules.Actors[SystemActors.World].TraitInfos<FactionInfo>();
foreach (var kv in teams) foreach (var kv in teams)
@@ -761,7 +761,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (game.Clients.Length > 10) if (game.Clients.Length > 10)
displayClients = displayClients displayClients = displayClients
.Take(9) .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"); var tooltip = displayClients.JoinWith("\n");
players.GetTooltipText = () => tooltip; players.GetTooltipText = () => tooltip;

View File

@@ -101,17 +101,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
this.modData = modData; this.modData = modData;
viewportSizes = modData.Manifest.Get<WorldViewportSizes>(); viewportSizes = modData.Manifest.Get<WorldViewportSizes>();
legacyFullscreen = modData.Translation.GetString(LegacyFullscreen); legacyFullscreen = TranslationProvider.GetString(LegacyFullscreen);
fullscreen = modData.Translation.GetString(Fullscreen); fullscreen = TranslationProvider.GetString(Fullscreen);
registerPanel(panelID, label, InitPanel, ResetPanel); registerPanel(panelID, label, InitPanel, ResetPanel);
showOnDamage = modData.Translation.GetString(ShowOnDamage); showOnDamage = TranslationProvider.GetString(ShowOnDamage);
alwaysShow = modData.Translation.GetString(AlwaysShow); alwaysShow = TranslationProvider.GetString(AlwaysShow);
automatic = modData.Translation.GetString(Automatic); automatic = TranslationProvider.GetString(Automatic);
manual = modData.Translation.GetString(Manual); manual = TranslationProvider.GetString(Manual);
disabled = modData.Translation.GetString(Disabled); disabled = TranslationProvider.GetString(Disabled);
} }
public static string GetViewportSizeName(ModData modData, WorldViewport worldViewport) public static string GetViewportSizeName(ModData modData, WorldViewport worldViewport)
@@ -119,13 +119,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
switch (worldViewport) switch (worldViewport)
{ {
case WorldViewport.Close: case WorldViewport.Close:
return modData.Translation.GetString(Close); return TranslationProvider.GetString(Close);
case WorldViewport.Medium: case WorldViewport.Medium:
return modData.Translation.GetString(Medium); return TranslationProvider.GetString(Medium);
case WorldViewport.Far: case WorldViewport.Far:
return modData.Translation.GetString(Far); return TranslationProvider.GetString(Far);
case WorldViewport.Native: case WorldViewport.Native:
return modData.Translation.GetString(Furthest); return TranslationProvider.GetString(Furthest);
default: default:
return ""; return "";
} }
@@ -149,14 +149,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
SettingsUtils.BindCheckboxPref(panel, "HIDE_REPLAY_CHAT_CHECKBOX", gs, "HideReplayChat"); SettingsUtils.BindCheckboxPref(panel, "HIDE_REPLAY_CHAT_CHECKBOX", gs, "HideReplayChat");
var windowModeDropdown = panel.Get<DropDownButtonWidget>("MODE_DROPDOWN"); var windowModeDropdown = panel.Get<DropDownButtonWidget>("MODE_DROPDOWN");
windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(modData, windowModeDropdown, ds, scrollPanel); windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, ds, scrollPanel);
windowModeDropdown.GetText = () => ds.Mode == WindowMode.Windowed windowModeDropdown.GetText = () => ds.Mode == WindowMode.Windowed
? modData.Translation.GetString(Windowed) ? TranslationProvider.GetString(Windowed)
: ds.Mode == WindowMode.Fullscreen ? legacyFullscreen : fullscreen; : ds.Mode == WindowMode.Fullscreen ? legacyFullscreen : fullscreen;
var displaySelectionDropDown = panel.Get<DropDownButtonWidget>("DISPLAY_SELECTION_DROPDOWN"); var displaySelectionDropDown = panel.Get<DropDownButtonWidget>("DISPLAY_SELECTION_DROPDOWN");
displaySelectionDropDown.OnMouseDown = _ => ShowDisplaySelectionDropdown(displaySelectionDropDown, ds); displaySelectionDropDown.OnMouseDown = _ => ShowDisplaySelectionDropdown(displaySelectionDropDown, ds);
var displaySelectionLabel = new CachedTransform<int, string>(i => modData.Translation.GetString(Display, Translation.Arguments("number", i + 1))); var displaySelectionLabel = new CachedTransform<int, string>(i => TranslationProvider.GetString(Display, Translation.Arguments("number", i + 1)));
displaySelectionDropDown.GetText = () => displaySelectionLabel.Update(ds.VideoDisplay); displaySelectionDropDown.GetText = () => displaySelectionLabel.Update(ds.VideoDisplay);
displaySelectionDropDown.IsDisabled = () => Game.Renderer.DisplayCount < 2; displaySelectionDropDown.IsDisabled = () => Game.Renderer.DisplayCount < 2;
@@ -168,15 +168,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
glProfileDropdown.IsDisabled = () => disableProfile; glProfileDropdown.IsDisabled = () => disableProfile;
var statusBarsDropDown = panel.Get<DropDownButtonWidget>("STATUS_BAR_DROPDOWN"); var statusBarsDropDown = panel.Get<DropDownButtonWidget>("STATUS_BAR_DROPDOWN");
statusBarsDropDown.OnMouseDown = _ => ShowStatusBarsDropdown(modData, statusBarsDropDown, gs); statusBarsDropDown.OnMouseDown = _ => ShowStatusBarsDropdown(statusBarsDropDown, gs);
statusBarsDropDown.GetText = () => gs.StatusBars == StatusBarsType.Standard statusBarsDropDown.GetText = () => gs.StatusBars == StatusBarsType.Standard
? modData.Translation.GetString(Standard) ? TranslationProvider.GetString(Standard)
: gs.StatusBars == StatusBarsType.DamageShow : gs.StatusBars == StatusBarsType.DamageShow
? showOnDamage ? showOnDamage
: alwaysShow; : alwaysShow;
var targetLinesDropDown = panel.Get<DropDownButtonWidget>("TARGET_LINES_DROPDOWN"); var targetLinesDropDown = panel.Get<DropDownButtonWidget>("TARGET_LINES_DROPDOWN");
targetLinesDropDown.OnMouseDown = _ => ShowTargetLinesDropdown(modData, targetLinesDropDown, gs); targetLinesDropDown.OnMouseDown = _ => ShowTargetLinesDropdown(targetLinesDropDown, gs);
targetLinesDropDown.GetText = () => gs.TargetLines == TargetLinesType.Automatic targetLinesDropDown.GetText = () => gs.TargetLines == TargetLinesType.Automatic
? automatic ? automatic
: gs.TargetLines == TargetLinesType.Manual : 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<string, WindowMode>() var options = new Dictionary<string, WindowMode>()
{ {
{ modData.Translation.GetString(Fullscreen), WindowMode.PseudoFullscreen }, { TranslationProvider.GetString(Fullscreen), WindowMode.PseudoFullscreen },
{ modData.Translation.GetString(LegacyFullscreen), WindowMode.Fullscreen }, { TranslationProvider.GetString(LegacyFullscreen), WindowMode.Fullscreen },
{ modData.Translation.GetString(Windowed), WindowMode.Windowed }, { TranslationProvider.GetString(Windowed), WindowMode.Windowed },
}; };
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) 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<string, StatusBarsType>() var options = new Dictionary<string, StatusBarsType>()
{ {
{ modData.Translation.GetString(Standard), StatusBarsType.Standard }, { TranslationProvider.GetString(Standard), StatusBarsType.Standard },
{ modData.Translation.GetString(ShowOnDamage), StatusBarsType.DamageShow }, { TranslationProvider.GetString(ShowOnDamage), StatusBarsType.DamageShow },
{ modData.Translation.GetString(AlwaysShow), StatusBarsType.AlwaysShow }, { TranslationProvider.GetString(AlwaysShow), StatusBarsType.AlwaysShow },
}; };
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)
@@ -436,13 +436,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, profiles, SetupItem); 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<string, TargetLinesType>() var options = new Dictionary<string, TargetLinesType>()
{ {
{ modData.Translation.GetString(Automatic), TargetLinesType.Automatic }, { TranslationProvider.GetString(Automatic), TargetLinesType.Automatic },
{ modData.Translation.GetString(Manual), TargetLinesType.Manual }, { TranslationProvider.GetString(Manual), TargetLinesType.Manual },
{ modData.Translation.GetString(Disabled), TargetLinesType.Disabled }, { TranslationProvider.GetString(Disabled), TargetLinesType.Disabled },
}; };
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)

View File

@@ -55,15 +55,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
readonly string classic; readonly string classic;
readonly string modern; readonly string modern;
readonly ModData modData;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public InputSettingsLogic(Action<string, string, Func<Widget, Func<bool>>, Func<Widget, Action>> registerPanel, string panelID, string label, ModData modData) public InputSettingsLogic(Action<string, string, Func<Widget, Func<bool>>, Func<Widget, Action>> registerPanel, string panelID, string label)
{ {
this.modData = modData; classic = TranslationProvider.GetString(Classic);
modern = TranslationProvider.GetString(Modern);
classic = modData.Translation.GetString(Classic);
modern = modData.Translation.GetString(Modern);
registerPanel(panelID, label, InitPanel, ResetPanel); registerPanel(panelID, label, InitPanel, ResetPanel);
} }
@@ -81,11 +77,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
SettingsUtils.BindSliderPref(panel, "UI_SCROLLSPEED_SLIDER", gs, "UIScrollSpeed"); SettingsUtils.BindSliderPref(panel, "UI_SCROLLSPEED_SLIDER", gs, "UIScrollSpeed");
var mouseControlDropdown = panel.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN"); var mouseControlDropdown = panel.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN");
mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(modData, mouseControlDropdown, gs); mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(mouseControlDropdown, gs);
mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern; mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern;
var mouseScrollDropdown = panel.Get<DropDownButtonWidget>("MOUSE_SCROLL_TYPE_DROPDOWN"); var mouseScrollDropdown = panel.Get<DropDownButtonWidget>("MOUSE_SCROLL_TYPE_DROPDOWN");
mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(modData, mouseScrollDropdown, gs); mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gs);
mouseScrollDropdown.GetText = () => gs.MouseScroll.ToString(); mouseScrollDropdown.GetText = () => gs.MouseScroll.ToString();
var mouseControlDescClassic = panel.Get("MOUSE_CONTROL_DESC_CLASSIC"); var mouseControlDescClassic = panel.Get("MOUSE_CONTROL_DESC_CLASSIC");
@@ -130,7 +126,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}; };
var zoomModifierDropdown = panel.Get<DropDownButtonWidget>("ZOOM_MODIFIER"); var zoomModifierDropdown = panel.Get<DropDownButtonWidget>("ZOOM_MODIFIER");
zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(modData, zoomModifierDropdown, gs); zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(zoomModifierDropdown, gs);
zoomModifierDropdown.GetText = () => gs.ZoomModifier.ToString(); zoomModifierDropdown.GetText = () => gs.ZoomModifier.ToString();
SettingsUtils.AdjustSettingsScrollPanelLayout(scrollPanel); 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<string, bool>() var options = new Dictionary<string, bool>()
{ {
{ modData.Translation.GetString(Classic), true }, { TranslationProvider.GetString(Classic), true },
{ modData.Translation.GetString(Modern), false }, { TranslationProvider.GetString(Modern), false },
}; };
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) 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); 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<string, MouseScrollType>() var options = new Dictionary<string, MouseScrollType>()
{ {
{ modData.Translation.GetString(Disabled), MouseScrollType.Disabled }, { TranslationProvider.GetString(Disabled), MouseScrollType.Disabled },
{ modData.Translation.GetString(Standard), MouseScrollType.Standard }, { TranslationProvider.GetString(Standard), MouseScrollType.Standard },
{ modData.Translation.GetString(Inverted), MouseScrollType.Inverted }, { TranslationProvider.GetString(Inverted), MouseScrollType.Inverted },
{ modData.Translation.GetString(Joystick), MouseScrollType.Joystick }, { TranslationProvider.GetString(Joystick), MouseScrollType.Joystick },
}; };
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) 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); 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<string, Modifiers>() var options = new Dictionary<string, Modifiers>()
{ {
{ modData.Translation.GetString(Alt), Modifiers.Alt }, { TranslationProvider.GetString(Alt), Modifiers.Alt },
{ modData.Translation.GetString(Ctrl), Modifiers.Ctrl }, { TranslationProvider.GetString(Ctrl), Modifiers.Ctrl },
{ modData.Translation.GetString(Meta), Modifiers.Meta }, { TranslationProvider.GetString(Meta), Modifiers.Meta },
{ modData.Translation.GetString(Shift), Modifiers.Shift }, { TranslationProvider.GetString(Shift), Modifiers.Shift },
{ modData.Translation.GetString(None), Modifiers.None } { TranslationProvider.GetString(None), Modifiers.None }
}; };
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate) ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)