diff --git a/OpenRA.Game/FieldLoader.cs b/OpenRA.Game/FieldLoader.cs index b48c890472..80dd389092 100644 --- a/OpenRA.Game/FieldLoader.cs +++ b/OpenRA.Game/FieldLoader.cs @@ -275,7 +275,7 @@ namespace OpenRA } else if (fieldType == typeof(HotkeyReference)) { - return new HotkeyReference(value, Game.Settings.Keys); + return Game.ModData.Hotkeys[value]; } else if (fieldType == typeof(WDist)) { diff --git a/OpenRA.Game/Input/HotkeyReference.cs b/OpenRA.Game/Input/HotkeyReference.cs index 9c38112706..9b3359931d 100644 --- a/OpenRA.Game/Input/HotkeyReference.cs +++ b/OpenRA.Game/Input/HotkeyReference.cs @@ -32,20 +32,6 @@ namespace OpenRA this.getValue = getValue; } - public HotkeyReference(string name, KeySettings settings) - { - // Try parsing the value as a reference to a named hotkey - getValue = settings.GetHotkeyReference(name); - - if (getValue == null) - { - // Try parsing the value as a normal (static) hotkey - var staticKey = Hotkey.Invalid; - Hotkey.TryParse(name, out staticKey); - getValue = () => staticKey; - } - } - public Hotkey GetValue() { return getValue(); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs index a162cb291d..599f34dc91 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs @@ -23,12 +23,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic public class MapEditorLogic : ChromeLogic { [ObjectCreator.UseCtor] - public MapEditorLogic(Widget widget, World world, WorldRenderer worldRenderer, Dictionary logicArgs) + public MapEditorLogic(Widget widget, ModData modData, World world, WorldRenderer worldRenderer, Dictionary logicArgs) { MiniYaml yaml; var changeZoomKey = new HotkeyReference(); if (logicArgs.TryGetValue("ChangeZoomKey", out yaml)) - changeZoomKey = new HotkeyReference(yaml.Value, Game.Settings.Keys); + changeZoomKey = modData.Hotkeys[yaml.Value]; var editorViewport = widget.Get("MAP_EDITOR"); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleBasesHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleBasesHotkeyLogic.cs index 045930e746..ae9259090a 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleBasesHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleBasesHotkeyLogic.cs @@ -27,8 +27,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame readonly World world; [ObjectCreator.UseCtor] - public CycleBasesHotkeyLogic(Widget widget, WorldRenderer worldRenderer, World world, Dictionary logicArgs) - : base(widget, "CycleBasesKey", "WORLD_KEYHANDLER", logicArgs) + public CycleBasesHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, World world, Dictionary logicArgs) + : base(widget, modData, "CycleBasesKey", "WORLD_KEYHANDLER", logicArgs) { viewport = worldRenderer.Viewport; selection = world.Selection; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleProductionActorsHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleProductionActorsHotkeyLogic.cs index b550855885..2e0352817b 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleProductionActorsHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleProductionActorsHotkeyLogic.cs @@ -26,8 +26,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame readonly World world; [ObjectCreator.UseCtor] - public CycleProductionActorsHotkeyLogic(Widget widget, WorldRenderer worldRenderer, World world, Dictionary logicArgs) - : base(widget, "CycleProductionActorsKey", "WORLD_KEYHANDLER", logicArgs) + public CycleProductionActorsHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, World world, Dictionary logicArgs) + : base(widget, modData, "CycleProductionActorsKey", "WORLD_KEYHANDLER", logicArgs) { viewport = worldRenderer.Viewport; selection = world.Selection; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleStatusBarsHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleStatusBarsHotkeyLogic.cs index 398aad8c81..e666ef2621 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleStatusBarsHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/CycleStatusBarsHotkeyLogic.cs @@ -22,8 +22,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame StatusBarsType[] options = { StatusBarsType.Standard, StatusBarsType.DamageShow, StatusBarsType.AlwaysShow }; [ObjectCreator.UseCtor] - public CycleStatusBarsHotkeyLogic(Widget widget, Dictionary logicArgs) - : base(widget, "CycleStatusBarsKey", "WORLD_KEYHANDLER", logicArgs) { } + public CycleStatusBarsHotkeyLogic(Widget widget, ModData modData, Dictionary logicArgs) + : base(widget, modData, "CycleStatusBarsKey", "WORLD_KEYHANDLER", logicArgs) { } protected override bool OnHotkeyActivated(KeyInput e) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToLastEventHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToLastEventHotkeyLogic.cs index f5988b56e5..2d1a1d06f7 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToLastEventHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToLastEventHotkeyLogic.cs @@ -24,8 +24,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame readonly RadarPings radarPings; [ObjectCreator.UseCtor] - public JumpToLastEventHotkeyLogic(Widget widget, WorldRenderer worldRenderer, World world, Dictionary logicArgs) - : base(widget, "JumpToLastEventKey", "WORLD_KEYHANDLER", logicArgs) + public JumpToLastEventHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, World world, Dictionary logicArgs) + : base(widget, modData, "JumpToLastEventKey", "WORLD_KEYHANDLER", logicArgs) { viewport = worldRenderer.Viewport; radarPings = world.WorldActor.TraitOrDefault(); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToSelectedActorsHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToSelectedActorsHotkeyLogic.cs index 0418ba3e9b..7cd4bcf9d7 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToSelectedActorsHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/JumpToSelectedActorsHotkeyLogic.cs @@ -23,8 +23,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame readonly Selection selection; [ObjectCreator.UseCtor] - public JumpToSelectedActorsHotkeyLogic(Widget widget, WorldRenderer worldRenderer, World world, Dictionary logicArgs) - : base(widget, "JumpToSelectedActorsKey", "WORLD_KEYHANDLER", logicArgs) + public JumpToSelectedActorsHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, World world, Dictionary logicArgs) + : base(widget, modData, "JumpToSelectedActorsKey", "WORLD_KEYHANDLER", logicArgs) { viewport = worldRenderer.Viewport; selection = world.Selection; diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/PauseHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/PauseHotkeyLogic.cs index cf4a9905d4..b90e154301 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/PauseHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/PauseHotkeyLogic.cs @@ -22,8 +22,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame readonly World world; [ObjectCreator.UseCtor] - public PauseHotkeyLogic(Widget widget, World world, Dictionary logicArgs) - : base(widget, "PauseKey", "WORLD_KEYHANDLER", logicArgs) + public PauseHotkeyLogic(Widget widget, ModData modData, World world, Dictionary logicArgs) + : base(widget, modData, "PauseKey", "WORLD_KEYHANDLER", logicArgs) { this.world = world; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePixelDoubleHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePixelDoubleHotkeyLogic.cs index 9b07c782aa..007c58a5fe 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePixelDoubleHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePixelDoubleHotkeyLogic.cs @@ -22,8 +22,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame readonly Viewport viewport; [ObjectCreator.UseCtor] - public TogglePixelDoubleHotkeyLogic(Widget widget, WorldRenderer worldRenderer, Dictionary logicArgs) - : base(widget, "TogglePixelDoubleKey", "WORLD_KEYHANDLER", logicArgs) + public TogglePixelDoubleHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, Dictionary logicArgs) + : base(widget, modData, "TogglePixelDoubleKey", "WORLD_KEYHANDLER", logicArgs) { viewport = worldRenderer.Viewport; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePlayerStanceColorHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePlayerStanceColorHotkeyLogic.cs index 4be78e83cf..589d4ae8e6 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePlayerStanceColorHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/TogglePlayerStanceColorHotkeyLogic.cs @@ -20,8 +20,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame public class TogglePlayerStanceColorHotkeyLogic : SingleHotkeyBaseLogic { [ObjectCreator.UseCtor] - public TogglePlayerStanceColorHotkeyLogic(Widget widget, Dictionary logicArgs) - : base(widget, "TogglePlayerStanceColorKey", "WORLD_KEYHANDLER", logicArgs) { } + public TogglePlayerStanceColorHotkeyLogic(Widget widget, ModData modData, Dictionary logicArgs) + : base(widget, modData, "TogglePlayerStanceColorKey", "WORLD_KEYHANDLER", logicArgs) { } protected override bool OnHotkeyActivated(KeyInput e) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs index 80106f0373..15708f8850 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs @@ -28,7 +28,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Widget currentWidget; [ObjectCreator.UseCtor] - public MenuButtonsChromeLogic(Widget widget, World world, Dictionary logicArgs) + public MenuButtonsChromeLogic(Widget widget, ModData modData, World world, Dictionary logicArgs) { this.world = world; @@ -36,11 +36,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic menuRoot = Ui.Root.Get("MENU_ROOT"); MiniYaml yaml; - var ks = Game.Settings.Keys; string[] keyNames = Enum.GetNames(typeof(ObserverStatsPanel)); var statsHotkeys = new HotkeyReference[keyNames.Length]; for (var i = 0; i < keyNames.Length; i++) - statsHotkeys[i] = logicArgs.TryGetValue("Statistics" + keyNames[i] + "Key", out yaml) ? new HotkeyReference(yaml.Value, ks) : new HotkeyReference(); + statsHotkeys[i] = logicArgs.TryGetValue("Statistics" + keyNames[i] + "Key", out yaml) ? modData.Hotkeys[yaml.Value] : new HotkeyReference(); // System buttons var options = widget.GetOrNull("OPTIONS_BUTTON"); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs index d427524e41..2e8a225b01 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs @@ -62,15 +62,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic } [ObjectCreator.UseCtor] - public ObserverShroudSelectorLogic(Widget widget, World world, Dictionary logicArgs) + public ObserverShroudSelectorLogic(Widget widget, ModData modData, World world, Dictionary logicArgs) { MiniYaml yaml; - var ks = Game.Settings.Keys; if (logicArgs.TryGetValue("CombinedViewKey", out yaml)) - combinedViewKey = new HotkeyReference(yaml.Value, ks); + combinedViewKey = modData.Hotkeys[yaml.Value]; if (logicArgs.TryGetValue("WorldViewKey", out yaml)) - worldViewKey = new HotkeyReference(yaml.Value, ks); + worldViewKey = modData.Hotkeys[yaml.Value]; limitViews = world.Map.Visibility.HasFlag(MapVisibility.MissionSelector); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs index bddb4b718a..93e628f984 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs @@ -44,17 +44,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly WorldRenderer worldRenderer; [ObjectCreator.UseCtor] - public ObserverStatsLogic(World world, WorldRenderer worldRenderer, Widget widget, Action onExit, ObserverStatsPanel activePanel, Dictionary logicArgs) + public ObserverStatsLogic(World world, ModData modData, WorldRenderer worldRenderer, Widget widget, + Action onExit, ObserverStatsPanel activePanel, Dictionary logicArgs) { this.world = world; this.worldRenderer = worldRenderer; MiniYaml yaml; - var ks = Game.Settings.Keys; string[] keyNames = Enum.GetNames(typeof(ObserverStatsPanel)); var statsHotkeys = new HotkeyReference[keyNames.Length]; for (var i = 0; i < keyNames.Length; i++) - statsHotkeys[i] = logicArgs.TryGetValue("Statistics" + keyNames[i] + "Key", out yaml) ? new HotkeyReference(yaml.Value, ks) : new HotkeyReference(); + statsHotkeys[i] = logicArgs.TryGetValue("Statistics" + keyNames[i] + "Key", out yaml) ? modData.Hotkeys[yaml.Value] : new HotkeyReference(); players = world.Players.Where(p => !p.NonCombatant); diff --git a/OpenRA.Mods.Common/Widgets/Logic/MusicHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MusicHotkeyLogic.cs index 42247efbbf..060ab1a916 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MusicHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MusicHotkeyLogic.cs @@ -22,28 +22,26 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly MusicPlaylist musicPlaylist; [ObjectCreator.UseCtor] - public MusicHotkeyLogic(Widget widget, World world, Dictionary logicArgs) + public MusicHotkeyLogic(Widget widget, ModData modData, World world, Dictionary logicArgs) { musicPlaylist = world.WorldActor.Trait(); - var ks = Game.Settings.Keys; MiniYaml yaml; - var stopKey = new HotkeyReference(); if (logicArgs.TryGetValue("StopMusicKey", out yaml)) - stopKey = new HotkeyReference(yaml.Value, ks); + stopKey = modData.Hotkeys[yaml.Value]; var pauseKey = new HotkeyReference(); if (logicArgs.TryGetValue("PauseMusicKey", out yaml)) - pauseKey = new HotkeyReference(yaml.Value, ks); + pauseKey = modData.Hotkeys[yaml.Value]; var prevKey = new HotkeyReference(); if (logicArgs.TryGetValue("PrevMusicKey", out yaml)) - prevKey = new HotkeyReference(yaml.Value, ks); + prevKey = modData.Hotkeys[yaml.Value]; var nextKey = new HotkeyReference(); if (logicArgs.TryGetValue("NextMusicKey", out yaml)) - nextKey = new HotkeyReference(yaml.Value, ks); + nextKey = modData.Hotkeys[yaml.Value]; var keyhandler = widget.Get("GLOBAL_KEYHANDLER"); keyhandler.AddHandler(e => diff --git a/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs index b8cf1dce9f..31f95956e9 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MuteHotkeyLogic.cs @@ -20,8 +20,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic public class MuteHotkeyLogic : SingleHotkeyBaseLogic { [ObjectCreator.UseCtor] - public MuteHotkeyLogic(Widget widget, Dictionary logicArgs) - : base(widget, "MuteAudioKey", "GLOBAL_KEYHANDLER", logicArgs) { } + public MuteHotkeyLogic(Widget widget, ModData modData, Dictionary logicArgs) + : base(widget, modData, "MuteAudioKey", "GLOBAL_KEYHANDLER", logicArgs) { } protected override bool OnHotkeyActivated(KeyInput e) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/ScreenshotHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ScreenshotHotkeyLogic.cs index 596f5a9259..6388bbe41b 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ScreenshotHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ScreenshotHotkeyLogic.cs @@ -19,8 +19,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic public class ScreenshotHotkeyLogic : SingleHotkeyBaseLogic { [ObjectCreator.UseCtor] - public ScreenshotHotkeyLogic(Widget widget, Dictionary logicArgs) - : base(widget, "TakeScreenshotKey", "GLOBAL_KEYHANDLER", logicArgs) { } + public ScreenshotHotkeyLogic(Widget widget, ModData modData, Dictionary logicArgs) + : base(widget, modData, "TakeScreenshotKey", "GLOBAL_KEYHANDLER", logicArgs) { } protected override bool OnHotkeyActivated(KeyInput e) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/SingleHotkeyBaseLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/SingleHotkeyBaseLogic.cs index 6fcfcdbf30..743196d3fc 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/SingleHotkeyBaseLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/SingleHotkeyBaseLogic.cs @@ -17,14 +17,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic { public abstract class SingleHotkeyBaseLogic : ChromeLogic { - protected SingleHotkeyBaseLogic(Widget widget, string argName, string parentName, Dictionary logicArgs) + protected SingleHotkeyBaseLogic(Widget widget, ModData modData, string argName, string parentName, Dictionary logicArgs) { - var ks = Game.Settings.Keys; MiniYaml yaml; var namedKey = new HotkeyReference(); if (logicArgs.TryGetValue(argName, out yaml)) - namedKey = new HotkeyReference(yaml.Value, ks); + namedKey = modData.Hotkeys[yaml.Value]; var keyhandler = widget.Get(parentName); keyhandler.AddHandler(e => diff --git a/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs b/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs index f75343a4c5..53e187b8b6 100644 --- a/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs @@ -76,6 +76,7 @@ namespace OpenRA.Mods.Common.Widgets public ProductionIcon TooltipIcon { get; private set; } public Func GetTooltipIcon; public readonly World World; + readonly ModData modData; readonly OrderManager orderManager; public int MinimumRows = 4; @@ -127,8 +128,9 @@ namespace OpenRA.Mods.Common.Widgets } [ObjectCreator.UseCtor] - public ProductionPaletteWidget(OrderManager orderManager, World world, WorldRenderer worldRenderer) + public ProductionPaletteWidget(ModData modData, OrderManager orderManager, World world, WorldRenderer worldRenderer) { + this.modData = modData; this.orderManager = orderManager; World = world; this.worldRenderer = worldRenderer; @@ -146,7 +148,7 @@ namespace OpenRA.Mods.Common.Widgets base.Initialize(args); hotkeys = Exts.MakeArray(HotkeyCount, - i => new HotkeyReference(HotkeyPrefix + (i + 1).ToString("D2"), Game.Settings.Keys)); + i => modData.Hotkeys[HotkeyPrefix + (i + 1).ToString("D2")]); } public void ScrollDown() diff --git a/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs index 24c1be0f8a..0bc88f878d 100644 --- a/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs +++ b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs @@ -43,6 +43,7 @@ namespace OpenRA.Mods.Common.Widgets public int IconCount { get; private set; } public event Action OnIconCountChanged = (a, b) => { }; + readonly ModData modData; readonly WorldRenderer worldRenderer; readonly SupportPowerManager spm; @@ -82,8 +83,9 @@ namespace OpenRA.Mods.Common.Widgets } [ObjectCreator.UseCtor] - public SupportPowersWidget(World world, WorldRenderer worldRenderer) + public SupportPowersWidget(ModData modData, World world, WorldRenderer worldRenderer) { + this.modData = modData; this.worldRenderer = worldRenderer; spm = world.LocalPlayer.PlayerActor.Trait(); tooltipContainer = Exts.Lazy(() => @@ -98,7 +100,7 @@ namespace OpenRA.Mods.Common.Widgets base.Initialize(args); hotkeys = Exts.MakeArray(HotkeyCount, - i => new HotkeyReference(HotkeyPrefix + (i + 1).ToString("D2"), Game.Settings.Keys)); + i => modData.Hotkeys[HotkeyPrefix + (i + 1).ToString("D2")]); } public class SupportPowerIcon diff --git a/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs b/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs index a4a6d117d6..c0f1218cfd 100644 --- a/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ViewportControllerWidget.cs @@ -24,6 +24,7 @@ namespace OpenRA.Mods.Common.Widgets public class ViewportControllerWidget : Widget { + readonly ModData modData; readonly ResourceLayer resourceLayer; public readonly HotkeyReference ScrollUpKey = new HotkeyReference(); @@ -132,8 +133,9 @@ namespace OpenRA.Mods.Common.Widgets } [ObjectCreator.UseCtor] - public ViewportControllerWidget(World world, WorldRenderer worldRenderer) + public ViewportControllerWidget(ModData modData, World world, WorldRenderer worldRenderer) { + this.modData = modData; this.world = world; this.worldRenderer = worldRenderer; tooltipContainer = Exts.Lazy(() => @@ -147,10 +149,10 @@ namespace OpenRA.Mods.Common.Widgets base.Initialize(args); saveBookmarkHotkeys = Exts.MakeArray(BookmarkKeyCount, - i => new HotkeyReference(BookmarkSaveKeyPrefix + (i + 1).ToString("D2"), Game.Settings.Keys)); + i => modData.Hotkeys[BookmarkSaveKeyPrefix + (i + 1).ToString("D2")]); restoreBookmarkHotkeys = Exts.MakeArray(BookmarkKeyCount, - i => new HotkeyReference(BookmarkRestoreKeyPrefix + (i + 1).ToString("D2"), Game.Settings.Keys)); + i => modData.Hotkeys[BookmarkRestoreKeyPrefix + (i + 1).ToString("D2")]); bookmarkPositions = new WPos?[BookmarkKeyCount]; }