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);
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;
Rectangle projectionSafeBounds;
internal Translation Translation;
public static string ComputeUID(IReadOnlyPackage package)
{
return ComputeUID(package, GetMapFormat(package));
@@ -450,8 +448,6 @@ namespace OpenRA
}
Sequences = new SequenceSet(this, modData, Tileset, SequenceDefinitions);
Translation = TranslationDefinitions == null ? null
: new Translation(Game.Settings.Player.Language, FieldLoader.GetValue<string[]>("value", TranslationDefinitions.Value), this);
var tl = new MPos(0, 0).ToCPos(this);
var br = new MPos(MapSize.X - 1, MapSize.Y - 1).ToCPos(this);
@@ -1411,14 +1407,6 @@ namespace OpenRA
return false;
}
public string Translate(string key, IDictionary<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()
{
Sequences.Dispose();

View File

@@ -199,10 +199,14 @@ namespace OpenRA
public long DownloadBytes { 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)
{
// PERF: instead of loading mod level Translation for each MapPreview, reuse the already loaded one in modData.
if (modData.Translation.TryGetString(key, out var message, args))
// PERF: instead of loading mod level Translation per each MapPreview, reuse the already loaded one in TranslationProvider.
if (TranslationProvider.TryGetModString(key, out var message, args))
return message;
return innerData.Translation?.GetString(key, args) ?? key;

View File

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

View File

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

View File

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

View File

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

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;
if (stream.Length < InstallFromSourceLogic.ShowPercentageThreshold)
updateMessage(modData.Translation.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename)));
updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.Extracing, Translation.Arguments("filename", displayFilename)));
else
onProgress = b => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / stream.Length)));
onProgress = b => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / stream.Length)));
using (var target = File.OpenWrite(targetPath))
{

View File

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

View File

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

View File

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

View File

@@ -44,9 +44,9 @@ namespace OpenRA.Mods.Common.Installer
Action<long> onProgress = null;
if (length < InstallFromSourceLogic.ShowPercentageThreshold)
updateMessage(modData.Translation.GetString(InstallFromSourceLogic.CopyingFilename, Translation.Arguments("filename", displayFilename)));
updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.CopyingFilename, Translation.Arguments("filename", displayFilename)));
else
onProgress = b => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.CopyingFilenameProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length)));
onProgress = b => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.CopyingFilenameProgress, Translation.Arguments("filename", displayFilename, "progress", 100 * b / length)));
InstallerUtils.CopyStream(source, target, length, onProgress);
}

View File

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

View File

@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Installer
{
Log.Write("install", $"Extracting {sourcePath} -> {targetPath}");
var displayFilename = Path.GetFileName(Path.GetFileName(targetPath));
void OnProgress(int percent) => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent)));
void OnProgress(int percent) => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent)));
reader.ExtractFile(node.Value.Value, target, OnProgress);
}
}

View File

@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Installer
{
Log.Write("install", $"Extracting {sourcePath} -> {targetPath}");
var displayFilename = Path.GetFileName(Path.GetFileName(targetPath));
void OnProgress(int percent) => updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent)));
void OnProgress(int percent) => updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", percent)));
reader.ExtractFile(node.Value.Value, target, OnProgress);
}
}

View File

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

View File

@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Installer
using (var targetStream = File.OpenWrite(targetPath))
sourceStream.CopyTo(targetStream);
updateMessage(modData.Translation.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100)));
updateMessage(TranslationProvider.GetString(InstallFromSourceLogic.ExtractingProgress, Translation.Arguments("filename", displayFilename, "progress", 100)));
extracted.Add(targetPath);
}

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);
TextNotificationsManager.Debug(Game.ModData.Translation.GetString(CheatUsed, arguments));
TextNotificationsManager.Debug(TranslationProvider.GetString(CheatUsed, arguments));
}
bool IUnlocksRenderPlayer.RenderPlayerUnlocked => Enabled;

View File

@@ -92,7 +92,7 @@ namespace OpenRA.Mods.Common.Traits
techLevels, TechLevel, TechLevelDropdownLocked);
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.
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 =>
{
if (m == 0)
return Game.ModData.Translation.GetString(NoTimeLimit);
return TranslationProvider.GetString(NoTimeLimit);
else
return Game.ModData.Translation.GetString(TimeLimitOption, Translation.Arguments("minutes", m));
return TranslationProvider.GetString(TimeLimitOption, Translation.Arguments("minutes", m));
});
yield return new LobbyOption(map, "timelimit", TimeLimitLabel, TimeLimitDescription, TimeLimitDropdownVisible, TimeLimitDisplayOrder,
@@ -181,7 +181,7 @@ namespace OpenRA.Mods.Common.Traits
countdownLabel.GetText = () => null;
if (!info.SkipTimerExpiredNotification)
TextNotificationsManager.AddSystemLine(Game.ModData.Translation.GetString(TimeLimitExpired));
TextNotificationsManager.AddSystemLine(TranslationProvider.GetString(TimeLimitExpired));
}
}
}

View File

@@ -36,11 +36,11 @@ namespace OpenRA.Mods.Common.Widgets
var cancelButton = prompt.GetOrNull<ButtonWidget>("CANCEL_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;
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 headerHeight = 0;
foreach (var l in headerLines)
@@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Widgets
if (!string.IsNullOrEmpty(confirmText))
{
var confirmTextMessage = modData.Translation.GetString(confirmText);
var confirmTextMessage = TranslationProvider.GetString(confirmText);
confirmButton.GetText = () => confirmTextMessage;
}
}
@@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Widgets
if (!string.IsNullOrEmpty(cancelText))
{
var cancelTextMessage = modData.Translation.GetString(cancelText);
var cancelTextMessage = TranslationProvider.GetString(cancelText);
cancelButton.GetText = () => cancelTextMessage;
}
}
@@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Widgets
if (!string.IsNullOrEmpty(otherText))
{
var otherTextMessage = modData.Translation.GetString(otherText);
var otherTextMessage = TranslationProvider.GetString(otherText);
otherButton.GetText = () => otherTextMessage;
}
}
@@ -114,10 +114,10 @@ namespace OpenRA.Mods.Common.Widgets
Func<bool> doValidate = null;
ButtonWidget acceptButton = null, cancelButton = null;
var titleMessage = modData.Translation.GetString(title);
var titleMessage = TranslationProvider.GetString(title);
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;
var input = panel.Get<TextFieldWidget>("INPUT_TEXT");
@@ -147,7 +147,7 @@ namespace OpenRA.Mods.Common.Widgets
acceptButton = panel.Get<ButtonWidget>("ACCEPT_BUTTON");
if (!string.IsNullOrEmpty(acceptText))
{
var acceptTextMessage = modData.Translation.GetString(acceptText);
var acceptTextMessage = TranslationProvider.GetString(acceptText);
acceptButton.GetText = () => acceptTextMessage;
}
@@ -163,7 +163,7 @@ namespace OpenRA.Mods.Common.Widgets
cancelButton = panel.Get<ButtonWidget>("CANCEL_BUTTON");
if (!string.IsNullOrEmpty(cancelText))
{
var cancelTextMessage = modData.Translation.GetString(cancelText);
var cancelTextMessage = TranslationProvider.GetString(cancelText);
cancelButton.GetText = () => cancelTextMessage;
}

View File

@@ -96,7 +96,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
this.modData = modData;
panel = widget;
allPackages = modData.Translation.GetString(AllPackages);
allPackages = TranslationProvider.GetString(AllPackages);
var colorPickerPalettes = world.WorldActor.TraitsImplementing<IProvidesAssetBrowserColorPickerPalettes>()
.SelectMany(p => p.ColorPickerPaletteNames)
@@ -238,7 +238,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (frameText != null)
{
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 = () =>
{

View File

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

View File

@@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (tooltip != null)
searchTerms.Add(tooltip.Name);
var actorType = modData.Translation.GetString(ActorTypeTooltip, Translation.Arguments("actorType", a.Name));
var actorType = TranslationProvider.GetString(ActorTypeTooltip, Translation.Arguments("actorType", a.Name));
var tooltipText = tooltip == null ? actorType : tooltip.Name + $"\n{actorType}";
allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), tooltipText));
}

View File

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

View File

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

View File

@@ -301,7 +301,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}
catch (Exception ex)
{
TextNotificationsManager.Debug(modData.Translation.GetString(SaveDeletionFailed, Translation.Arguments("savePath", savePath)));
TextNotificationsManager.Debug(TranslationProvider.GetString(SaveDeletionFailed, Translation.Arguments("savePath", savePath)));
Log.Write("debug", ex.ToString());
return;
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
displayResources = playerResources.Cash + playerResources.Resources;
siloUsageTooltipCache = new CachedTransform<(int Resources, int Capacity), string>(x =>
modData.Translation.GetString(SiloUsage, Translation.Arguments("usage", x.Resources, "capacity", x.Capacity)));
TranslationProvider.GetString(SiloUsage, Translation.Arguments("usage", x.Resources, "capacity", x.Capacity)));
cashLabel = widget.Get<LabelWithTooltipWidget>("CASH");
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 teamChat = !disableTeamChat;
var teamMessage = modData.Translation.GetString(TeamChat);
var allMessage = modData.Translation.GetString(GeneralChat);
var teamMessage = TranslationProvider.GetString(TeamChat);
var allMessage = TranslationProvider.GetString(GeneralChat);
chatDisabled = modData.Translation.GetString(ChatDisabled);
chatDisabled = TranslationProvider.GetString(ChatDisabled);
// Only execute this once, the first time this widget is loaded
if (TextNotificationsManager.MutedPlayers.Count == 0)
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return true;
};
chatAvailableIn = new CachedTransform<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)
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

@@ -42,8 +42,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var ds = Game.Settings.Graphics;
var gs = Game.Settings.Game;
classic = modData.Translation.GetString(Classic);
modern = modData.Translation.GetString(Modern);
classic = TranslationProvider.GetString(Classic);
modern = TranslationProvider.GetString(Modern);
var escPressed = false;
var nameTextfield = widget.Get<TextFieldWidget>("PLAYERNAME");
@@ -83,7 +83,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
mouseControlDescModern.IsVisible = () => !gs.UseClassicMouseStyle;
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;
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";
[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;
var tempBan = false;

View File

@@ -20,9 +20,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
const string KickSpectators = "dialog-kick-spectators.prompt";
[ObjectCreator.UseCtor]
public KickSpectatorsLogic(ModData modData, Widget widget, int clientCount, Action okPressed, Action cancelPressed)
public KickSpectatorsLogic(Widget widget, int clientCount, Action okPressed, Action cancelPressed)
{
var kickMessage = modData.Translation.GetString(KickSpectators, Translation.Arguments("count", clientCount));
var kickMessage = TranslationProvider.GetString(KickSpectators, Translation.Arguments("count", clientCount));
widget.Get<LabelWidget>("TEXT").GetText = () => kickMessage;
widget.Get<ButtonWidget>("OK_BUTTON").OnClick = () =>

View File

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

View File

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

View File

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

View File

@@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return map.Status == MapStatus.Available && isPlayable;
};
SetupWidgets(available, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
SetupWidgets(available, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
}
var invalid = widget.GetOrNull("MAP_INVALID");
@@ -70,7 +70,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return map.Status == MapStatus.Available && (serverStatus & Session.MapStatus.Incompatible) != 0;
};
SetupWidgets(invalid, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
SetupWidgets(invalid, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
}
var validating = widget.GetOrNull("MAP_VALIDATING");
@@ -82,7 +82,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return map.Status == MapStatus.Available && (serverStatus & Session.MapStatus.Validating) != 0;
};
SetupWidgets(validating, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
SetupWidgets(validating, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
}
var download = widget.GetOrNull("MAP_DOWNLOADABLE");
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
download.IsVisible = () => getMap().Map.Status == MapStatus.DownloadAvailable;
SetupWidgets(download, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
SetupWidgets(download, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
var install = download.GetOrNull<ButtonWidget>("MAP_INSTALL");
if (install != null)
@@ -117,7 +117,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return map.Status != MapStatus.Available && map.Status != MapStatus.DownloadAvailable;
};
SetupWidgets(progress, modData, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
SetupWidgets(progress, getMap, onMouseDown, getSpawnOccupants, getDisabledSpawnPoints, showUnoccupiedSpawnpoints);
var statusSearching = progress.GetOrNull("MAP_STATUS_SEARCHING");
if (statusSearching != null)
@@ -152,13 +152,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
var (map, _) = getMap();
if (map.DownloadBytes == 0)
return modData.Translation.GetString(Connecting);
return TranslationProvider.GetString(Connecting);
// Server does not provide the total file length
if (map.DownloadPercentage == 0)
modData.Translation.GetString(Downloading, Translation.Arguments("size", map.DownloadBytes / 1024));
TranslationProvider.GetString(Downloading, Translation.Arguments("size", map.DownloadBytes / 1024));
return modData.Translation.GetString(DownloadingPercentage, Translation.Arguments("size", map.DownloadBytes / 1024, "progress", map.DownloadPercentage));
return TranslationProvider.GetString(DownloadingPercentage, Translation.Arguments("size", map.DownloadBytes / 1024, "progress", map.DownloadPercentage));
};
}
@@ -188,8 +188,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
};
retry.GetText = () => getMap().Map.Status == MapStatus.DownloadError
? modData.Translation.GetString(RetryInstall)
: modData.Translation.GetString(RetrySearch);
? TranslationProvider.GetString(RetryInstall)
: TranslationProvider.GetString(RetrySearch);
}
var progressbar = progress.GetOrNull<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,
Action<MapPreviewWidget, MapPreview, MouseInput> onMouseDown,
Func<Dictionary<int, SpawnOccupant>> getSpawnOccupants,
@@ -256,7 +256,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
var font = Game.Renderer.Fonts[authorLabel.Font];
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);
}
}

View File

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

View File

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

View File

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

View File

@@ -314,13 +314,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var speeds = modData.Manifest.Get<GameSpeeds>().Speeds;
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.OnMouseDown = _ =>
{
var options = speeds.Select(s => new DropDownOption
{
Title = modData.Translation.GetString(s.Value.Name),
Title = TranslationProvider.GetString(s.Value.Name),
IsSelected = () => gameSpeed == s.Key,
OnClick = () => gameSpeed = s.Key
});

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -55,15 +55,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
readonly string classic;
readonly string modern;
readonly ModData modData;
[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 = modData.Translation.GetString(Classic);
modern = modData.Translation.GetString(Modern);
classic = TranslationProvider.GetString(Classic);
modern = TranslationProvider.GetString(Modern);
registerPanel(panelID, label, InitPanel, ResetPanel);
}
@@ -81,11 +77,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
SettingsUtils.BindSliderPref(panel, "UI_SCROLLSPEED_SLIDER", gs, "UIScrollSpeed");
var mouseControlDropdown = panel.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN");
mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(modData, mouseControlDropdown, gs);
mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(mouseControlDropdown, gs);
mouseControlDropdown.GetText = () => gs.UseClassicMouseStyle ? classic : modern;
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();
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");
zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(modData, zoomModifierDropdown, gs);
zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(zoomModifierDropdown, gs);
zoomModifierDropdown.GetText = () => gs.ZoomModifier.ToString();
SettingsUtils.AdjustSettingsScrollPanelLayout(scrollPanel);
@@ -162,12 +158,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
};
}
public static void ShowMouseControlDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s)
public static void ShowMouseControlDropdown(DropDownButtonWidget dropdown, GameSettings s)
{
var options = new Dictionary<string, bool>()
{
{ modData.Translation.GetString(Classic), true },
{ modData.Translation.GetString(Modern), false },
{ TranslationProvider.GetString(Classic), true },
{ TranslationProvider.GetString(Modern), false },
};
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)
@@ -182,14 +178,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, SetupItem);
}
static void ShowMouseScrollDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s)
static void ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s)
{
var options = new Dictionary<string, MouseScrollType>()
{
{ modData.Translation.GetString(Disabled), MouseScrollType.Disabled },
{ modData.Translation.GetString(Standard), MouseScrollType.Standard },
{ modData.Translation.GetString(Inverted), MouseScrollType.Inverted },
{ modData.Translation.GetString(Joystick), MouseScrollType.Joystick },
{ TranslationProvider.GetString(Disabled), MouseScrollType.Disabled },
{ TranslationProvider.GetString(Standard), MouseScrollType.Standard },
{ TranslationProvider.GetString(Inverted), MouseScrollType.Inverted },
{ TranslationProvider.GetString(Joystick), MouseScrollType.Joystick },
};
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)
@@ -204,15 +200,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, SetupItem);
}
static void ShowZoomModifierDropdown(ModData modData, DropDownButtonWidget dropdown, GameSettings s)
static void ShowZoomModifierDropdown(DropDownButtonWidget dropdown, GameSettings s)
{
var options = new Dictionary<string, Modifiers>()
{
{ modData.Translation.GetString(Alt), Modifiers.Alt },
{ modData.Translation.GetString(Ctrl), Modifiers.Ctrl },
{ modData.Translation.GetString(Meta), Modifiers.Meta },
{ modData.Translation.GetString(Shift), Modifiers.Shift },
{ modData.Translation.GetString(None), Modifiers.None }
{ TranslationProvider.GetString(Alt), Modifiers.Alt },
{ TranslationProvider.GetString(Ctrl), Modifiers.Ctrl },
{ TranslationProvider.GetString(Meta), Modifiers.Meta },
{ TranslationProvider.GetString(Shift), Modifiers.Shift },
{ TranslationProvider.GetString(None), Modifiers.None }
};
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)