Make production type hotkeys configurable.

This commit is contained in:
Paul Chote
2014-12-28 17:24:12 +13:00
parent a549e1b418
commit d9752c3bdf
7 changed files with 48 additions and 12 deletions

View File

@@ -37,11 +37,21 @@ namespace OpenRA.Mods.RA.Widgets.Logic
palette.CurrentQueue = queues.FirstOrDefault(q => q.Enabled);
};
Func<ButtonWidget, Hotkey> getKey = _ => Hotkey.Invalid;
if (!string.IsNullOrEmpty(button.HotkeyName))
{
var ks = Game.Settings.Keys;
var field = ks.GetType().GetField(button.HotkeyName);
if (field != null)
getKey = _ => (Hotkey)field.GetValue(ks);
}
button.IsDisabled = () => !queues.Any(q => q.BuildableItems().Any());
button.OnMouseUp = mi => selectTab(mi.Modifiers.HasModifier(Modifiers.Shift));
button.OnKeyPress = e => selectTab(e.Modifiers.HasModifier(Modifiers.Shift));
button.OnClick = () => selectTab(false);
button.IsHighlighted = () => queues.Contains(palette.CurrentQueue);
button.GetKey = getKey;
var chromeName = button.ProductionGroup.ToLowerInvariant();
var icon = button.Get<ImageWidget>("ICON");