Add hotkey settings panel with a hotkey remap dialog
* Add HotkeyDialogLogic.cs * Add dialog-hotkey.yaml to all mods * Add `GetFirstDuplicate` method to HotkeyManager to aid in validation * Add "Player" and/or "Spectator" type to all hotkeys to allow for validation based on overlapping types * Change settings.yaml and SettingsLogic.cs to work with the new dialog
This commit is contained in:
committed by
abcdefg30
parent
9783fdaf78
commit
c9ff54bfd5
@@ -67,6 +67,20 @@ namespace OpenRA
|
|||||||
settings.Remove(name);
|
settings.Remove(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HotkeyDefinition GetFirstDuplicate(string name, Hotkey value, HotkeyDefinition definition)
|
||||||
|
{
|
||||||
|
foreach (var kv in keys)
|
||||||
|
{
|
||||||
|
if (kv.Key == name)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (kv.Value == value && definitions[kv.Key].Types.Overlaps(definition.Types))
|
||||||
|
return definitions[kv.Key];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public HotkeyReference this[string name]
|
public HotkeyReference this[string name]
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -24,12 +24,17 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public int LeftMargin = 5;
|
public int LeftMargin = 5;
|
||||||
public int RightMargin = 5;
|
public int RightMargin = 5;
|
||||||
|
|
||||||
|
public Action OnTakeFocus = () => { };
|
||||||
public Action OnLoseFocus = () => { };
|
public Action OnLoseFocus = () => { };
|
||||||
|
public Action OnEscape = () => { };
|
||||||
|
public Action OnReturn = () => { };
|
||||||
|
|
||||||
public Func<bool> IsDisabled = () => false;
|
public Func<bool> IsDisabled = () => false;
|
||||||
|
public Func<bool> IsValid = () => false;
|
||||||
public string Font = ChromeMetrics.Get<string>("HotkeyFont");
|
public string Font = ChromeMetrics.Get<string>("HotkeyFont");
|
||||||
public Color TextColor = ChromeMetrics.Get<Color>("HotkeyColor");
|
public Color TextColor = ChromeMetrics.Get<Color>("HotkeyColor");
|
||||||
public Color TextColorDisabled = ChromeMetrics.Get<Color>("HotkeyColorDisabled");
|
public Color TextColorDisabled = ChromeMetrics.Get<Color>("HotkeyColorDisabled");
|
||||||
|
public Color TextColorInvalid = ChromeMetrics.Get<Color>("HotkeyColorInvalid");
|
||||||
|
|
||||||
public HotkeyEntryWidget() { }
|
public HotkeyEntryWidget() { }
|
||||||
protected HotkeyEntryWidget(HotkeyEntryWidget widget)
|
protected HotkeyEntryWidget(HotkeyEntryWidget widget)
|
||||||
@@ -38,12 +43,22 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
Font = widget.Font;
|
Font = widget.Font;
|
||||||
TextColor = widget.TextColor;
|
TextColor = widget.TextColor;
|
||||||
TextColorDisabled = widget.TextColorDisabled;
|
TextColorDisabled = widget.TextColorDisabled;
|
||||||
|
TextColorInvalid = widget.TextColorInvalid;
|
||||||
VisualHeight = widget.VisualHeight;
|
VisualHeight = widget.VisualHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool TakeKeyboardFocus()
|
||||||
|
{
|
||||||
|
OnTakeFocus();
|
||||||
|
return base.TakeKeyboardFocus();
|
||||||
|
}
|
||||||
|
|
||||||
public override bool YieldKeyboardFocus()
|
public override bool YieldKeyboardFocus()
|
||||||
{
|
{
|
||||||
OnLoseFocus();
|
OnLoseFocus();
|
||||||
|
if (!IsValid())
|
||||||
|
return false;
|
||||||
|
|
||||||
return base.YieldKeyboardFocus();
|
return base.YieldKeyboardFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,8 +95,15 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
if (!HasKeyboardFocus || IgnoreKeys.Contains(e.Key))
|
if (!HasKeyboardFocus || IgnoreKeys.Contains(e.Key))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (e.Key != Keycode.ESCAPE && e.Key != Keycode.RETURN)
|
||||||
Key = Hotkey.FromKeyInput(e);
|
Key = Hotkey.FromKeyInput(e);
|
||||||
|
|
||||||
|
if (e.Key == Keycode.ESCAPE)
|
||||||
|
OnEscape();
|
||||||
|
|
||||||
|
if (e.Key == Keycode.RETURN)
|
||||||
|
OnReturn();
|
||||||
|
|
||||||
YieldKeyboardFocus();
|
YieldKeyboardFocus();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -109,6 +131,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
var textSize = font.Measure(apparentText);
|
var textSize = font.Measure(apparentText);
|
||||||
|
|
||||||
var disabled = IsDisabled();
|
var disabled = IsDisabled();
|
||||||
|
var valid = IsValid();
|
||||||
var state = disabled ? "textfield-disabled" :
|
var state = disabled ? "textfield-disabled" :
|
||||||
HasKeyboardFocus ? "textfield-focused" :
|
HasKeyboardFocus ? "textfield-focused" :
|
||||||
Ui.MouseOverWidget == this ? "textfield-hover" :
|
Ui.MouseOverWidget == this ? "textfield-hover" :
|
||||||
@@ -131,7 +154,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
Bounds.Width - LeftMargin - RightMargin, Bounds.Bottom));
|
Bounds.Width - LeftMargin - RightMargin, Bounds.Bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
var color = disabled ? TextColorDisabled : TextColor;
|
var color = disabled ? TextColorDisabled : !valid ? TextColorInvalid : TextColor;
|
||||||
font.DrawText(apparentText, textPos, color);
|
font.DrawText(apparentText, textPos, color);
|
||||||
|
|
||||||
if (isTextOverflowing)
|
if (isTextOverflowing)
|
||||||
|
|||||||
149
OpenRA.Mods.Common/Widgets/Logic/HotkeyDialogLogic.cs
Normal file
149
OpenRA.Mods.Common/Widgets/Logic/HotkeyDialogLogic.cs
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2019 The OpenRA Developers (see AUTHORS)
|
||||||
|
* 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;
|
||||||
|
using OpenRA.Primitives;
|
||||||
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Widgets.Logic
|
||||||
|
{
|
||||||
|
public class HotkeyDialogLogic : ChromeLogic
|
||||||
|
{
|
||||||
|
readonly Widget panel;
|
||||||
|
readonly ButtonWidget resetButton, clearButton, cancelButton;
|
||||||
|
readonly LabelWidget duplicateNotice, defaultNotice, originalNotice;
|
||||||
|
readonly Action onSave;
|
||||||
|
readonly HotkeyDefinition definition;
|
||||||
|
readonly HotkeyManager manager;
|
||||||
|
readonly HotkeyEntryWidget hotkeyEntry;
|
||||||
|
readonly bool isFirstValidation = true;
|
||||||
|
Hotkey currentHotkey;
|
||||||
|
HotkeyDefinition duplicateHotkey;
|
||||||
|
bool isValid = false;
|
||||||
|
bool isValidating = false;
|
||||||
|
|
||||||
|
[ObjectCreator.UseCtor]
|
||||||
|
public HotkeyDialogLogic(Widget widget, Action onSave, HotkeyDefinition hotkeyDefinition, HotkeyManager hotkeyManager)
|
||||||
|
{
|
||||||
|
panel = widget;
|
||||||
|
this.onSave = onSave;
|
||||||
|
definition = hotkeyDefinition;
|
||||||
|
manager = hotkeyManager;
|
||||||
|
currentHotkey = manager[definition.Name].GetValue();
|
||||||
|
hotkeyEntry = panel.Get<HotkeyEntryWidget>("HOTKEY_ENTRY");
|
||||||
|
resetButton = panel.Get<ButtonWidget>("RESET_BUTTON");
|
||||||
|
clearButton = panel.Get<ButtonWidget>("CLEAR_BUTTON");
|
||||||
|
cancelButton = panel.Get<ButtonWidget>("CANCEL_BUTTON");
|
||||||
|
duplicateNotice = panel.Get<LabelWidget>("DUPLICATE_NOTICE");
|
||||||
|
defaultNotice = panel.Get<LabelWidget>("DEFAULT_NOTICE");
|
||||||
|
originalNotice = panel.Get<LabelWidget>("ORIGINAL_NOTICE");
|
||||||
|
|
||||||
|
panel.Get<LabelWidget>("HOTKEY_LABEL").GetText = () => hotkeyDefinition.Description + ":";
|
||||||
|
|
||||||
|
duplicateNotice.TextColor = ChromeMetrics.Get<Color>("NoticeErrorColor");
|
||||||
|
duplicateNotice.GetText = () =>
|
||||||
|
{
|
||||||
|
return (duplicateHotkey != null) ? duplicateNotice.Text.F(duplicateHotkey.Description) : duplicateNotice.Text;
|
||||||
|
};
|
||||||
|
defaultNotice.TextColor = ChromeMetrics.Get<Color>("NoticeInfoColor");
|
||||||
|
originalNotice.TextColor = ChromeMetrics.Get<Color>("NoticeInfoColor");
|
||||||
|
originalNotice.Text = originalNotice.Text.F(hotkeyDefinition.Default.DisplayString());
|
||||||
|
|
||||||
|
resetButton.OnClick = Reset;
|
||||||
|
clearButton.OnClick = Clear;
|
||||||
|
cancelButton.OnClick = Cancel;
|
||||||
|
|
||||||
|
hotkeyEntry.Key = currentHotkey;
|
||||||
|
hotkeyEntry.IsValid = () => isValid;
|
||||||
|
hotkeyEntry.OnTakeFocus = OnHotkeyEntryTakeFocus;
|
||||||
|
hotkeyEntry.OnLoseFocus = OnHotkeyEntryLoseFocus;
|
||||||
|
hotkeyEntry.OnEscape = Cancel;
|
||||||
|
hotkeyEntry.OnReturn = Cancel;
|
||||||
|
hotkeyEntry.TakeKeyboardFocus();
|
||||||
|
|
||||||
|
Validate();
|
||||||
|
isFirstValidation = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnHotkeyEntryTakeFocus()
|
||||||
|
{
|
||||||
|
cancelButton.Disabled = manager.GetFirstDuplicate(definition.Name, currentHotkey, definition) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnHotkeyEntryLoseFocus()
|
||||||
|
{
|
||||||
|
cancelButton.Disabled = true;
|
||||||
|
if (!isValidating)
|
||||||
|
Validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Validate()
|
||||||
|
{
|
||||||
|
isValidating = true;
|
||||||
|
|
||||||
|
duplicateHotkey = manager.GetFirstDuplicate(definition.Name, hotkeyEntry.Key, definition);
|
||||||
|
isValid = duplicateHotkey == null;
|
||||||
|
|
||||||
|
duplicateNotice.Visible = !isValid;
|
||||||
|
clearButton.Disabled = !hotkeyEntry.Key.IsValid();
|
||||||
|
|
||||||
|
if (hotkeyEntry.Key == definition.Default || (!hotkeyEntry.Key.IsValid() && !definition.Default.IsValid()))
|
||||||
|
{
|
||||||
|
defaultNotice.Visible = !duplicateNotice.Visible;
|
||||||
|
originalNotice.Visible = false;
|
||||||
|
resetButton.Disabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
defaultNotice.Visible = false;
|
||||||
|
originalNotice.Visible = !duplicateNotice.Visible;
|
||||||
|
resetButton.Disabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isValid && !isFirstValidation)
|
||||||
|
{
|
||||||
|
currentHotkey = hotkeyEntry.Key;
|
||||||
|
hotkeyEntry.YieldKeyboardFocus();
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hotkeyEntry.TakeKeyboardFocus();
|
||||||
|
|
||||||
|
isValidating = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Save()
|
||||||
|
{
|
||||||
|
manager.Set(definition.Name, hotkeyEntry.Key);
|
||||||
|
Game.Settings.Save();
|
||||||
|
onSave();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Cancel()
|
||||||
|
{
|
||||||
|
cancelButton.Disabled = true;
|
||||||
|
hotkeyEntry.Key = currentHotkey;
|
||||||
|
Validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
hotkeyEntry.Key = definition.Default;
|
||||||
|
Validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Clear()
|
||||||
|
{
|
||||||
|
hotkeyEntry.Key = Hotkey.Invalid;
|
||||||
|
Validate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,13 +13,14 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
|
using OpenRA.Primitives;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Widgets.Logic
|
namespace OpenRA.Mods.Common.Widgets.Logic
|
||||||
{
|
{
|
||||||
public class SettingsLogic : ChromeLogic
|
public class SettingsLogic : ChromeLogic
|
||||||
{
|
{
|
||||||
enum PanelType { Display, Audio, Input, Advanced }
|
enum PanelType { Display, Audio, Input, Hotkeys, Advanced }
|
||||||
|
|
||||||
static readonly string OriginalSoundDevice;
|
static readonly string OriginalSoundDevice;
|
||||||
static readonly WindowMode OriginalGraphicsMode;
|
static readonly WindowMode OriginalGraphicsMode;
|
||||||
@@ -61,6 +62,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
RegisterSettingsPanel(PanelType.Display, InitDisplayPanel, ResetDisplayPanel, "DISPLAY_PANEL", "DISPLAY_TAB");
|
RegisterSettingsPanel(PanelType.Display, InitDisplayPanel, ResetDisplayPanel, "DISPLAY_PANEL", "DISPLAY_TAB");
|
||||||
RegisterSettingsPanel(PanelType.Audio, InitAudioPanel, ResetAudioPanel, "AUDIO_PANEL", "AUDIO_TAB");
|
RegisterSettingsPanel(PanelType.Audio, InitAudioPanel, ResetAudioPanel, "AUDIO_PANEL", "AUDIO_TAB");
|
||||||
RegisterSettingsPanel(PanelType.Input, InitInputPanel, ResetInputPanel, "INPUT_PANEL", "INPUT_TAB");
|
RegisterSettingsPanel(PanelType.Input, InitInputPanel, ResetInputPanel, "INPUT_PANEL", "INPUT_TAB");
|
||||||
|
RegisterSettingsPanel(PanelType.Hotkeys, InitHotkeysPanel, ResetHotkeysPanel, "HOTKEYS_PANEL", "HOTKEYS_TAB");
|
||||||
RegisterSettingsPanel(PanelType.Advanced, InitAdvancedPanel, ResetAdvancedPanel, "ADVANCED_PANEL", "ADVANCED_TAB");
|
RegisterSettingsPanel(PanelType.Advanced, InitAdvancedPanel, ResetAdvancedPanel, "ADVANCED_PANEL", "ADVANCED_TAB");
|
||||||
|
|
||||||
panelContainer.Get<ButtonWidget>("BACK_BUTTON").OnClick = () =>
|
panelContainer.Get<ButtonWidget>("BACK_BUTTON").OnClick = () =>
|
||||||
@@ -123,7 +125,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
ss.OnChange += x => field.SetValue(group, x);
|
ss.OnChange += x => field.SetValue(group, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void BindHotkeyPref(HotkeyDefinition hd, HotkeyManager manager, Widget template, Widget parent)
|
static void BindHotkeyPref(HotkeyDefinition hd, HotkeyManager manager, Widget template, Widget parent, Widget remapDialogRoot, Widget remapDialogPlaceholder)
|
||||||
{
|
{
|
||||||
var key = template.Clone() as Widget;
|
var key = template.Clone() as Widget;
|
||||||
key.Id = hd.Name;
|
key.Id = hd.Name;
|
||||||
@@ -131,9 +133,53 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
key.Get<LabelWidget>("FUNCTION").GetText = () => hd.Description + ":";
|
key.Get<LabelWidget>("FUNCTION").GetText = () => hd.Description + ":";
|
||||||
|
|
||||||
var textBox = key.Get<HotkeyEntryWidget>("HOTKEY");
|
var remapButton = key.Get<ButtonWidget>("HOTKEY");
|
||||||
textBox.Key = manager[hd.Name].GetValue();
|
remapButton.GetText = () => manager[hd.Name].GetValue().DisplayString();
|
||||||
textBox.OnLoseFocus = () => manager.Set(hd.Name, textBox.Key);
|
|
||||||
|
if (manager.GetFirstDuplicate(hd.Name, manager[hd.Name].GetValue(), hd) != null)
|
||||||
|
remapButton.GetColor = () => ChromeMetrics.Get<Color>("HotkeyColorInvalid");
|
||||||
|
|
||||||
|
remapButton.OnClick = () =>
|
||||||
|
{
|
||||||
|
remapDialogRoot.RemoveChildren();
|
||||||
|
|
||||||
|
if (remapButton.IsHighlighted())
|
||||||
|
{
|
||||||
|
remapButton.IsHighlighted = () => false;
|
||||||
|
|
||||||
|
if (remapDialogPlaceholder != null)
|
||||||
|
remapDialogPlaceholder.Visible = true;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (remapDialogPlaceholder != null)
|
||||||
|
remapDialogPlaceholder.Visible = false;
|
||||||
|
|
||||||
|
var siblings = parent.Children;
|
||||||
|
foreach (var sibling in siblings)
|
||||||
|
{
|
||||||
|
var button = sibling.GetOrNull<ButtonWidget>("HOTKEY");
|
||||||
|
if (button != null)
|
||||||
|
button.IsHighlighted = () => false;
|
||||||
|
}
|
||||||
|
|
||||||
|
remapButton.IsHighlighted = () => true;
|
||||||
|
|
||||||
|
Ui.LoadWidget("HOTKEY_DIALOG", remapDialogRoot, new WidgetArgs
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"onSave", () =>
|
||||||
|
{
|
||||||
|
remapButton.GetText = () => manager[hd.Name].GetValue().DisplayString();
|
||||||
|
remapButton.GetColor = () => ChromeMetrics.Get<Color>("ButtonTextColor");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ "hotkeyDefinition", hd },
|
||||||
|
{ "hotkeyManager", manager },
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
parent.AddChild(key);
|
parent.AddChild(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -408,6 +454,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(zoomModifierDropdown, gs);
|
zoomModifierDropdown.OnMouseDown = _ => ShowZoomModifierDropdown(zoomModifierDropdown, gs);
|
||||||
zoomModifierDropdown.GetText = () => gs.ZoomModifier.ToString();
|
zoomModifierDropdown.GetText = () => gs.ZoomModifier.ToString();
|
||||||
|
|
||||||
|
return () => { };
|
||||||
|
}
|
||||||
|
|
||||||
|
Action InitHotkeysPanel(Widget panel)
|
||||||
|
{
|
||||||
var hotkeyList = panel.Get<ScrollPanelWidget>("HOTKEY_LIST");
|
var hotkeyList = panel.Get<ScrollPanelWidget>("HOTKEY_LIST");
|
||||||
hotkeyList.Layout = new GridLayout(hotkeyList);
|
hotkeyList.Layout = new GridLayout(hotkeyList);
|
||||||
var hotkeyHeader = hotkeyList.Get<ScrollItemWidget>("HEADER");
|
var hotkeyHeader = hotkeyList.Get<ScrollItemWidget>("HEADER");
|
||||||
@@ -434,10 +485,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
var types = FieldLoader.GetValue<string[]>("Types", typesNode.Value.Value);
|
var types = FieldLoader.GetValue<string[]>("Types", typesNode.Value.Value);
|
||||||
var added = new HashSet<HotkeyDefinition>();
|
var added = new HashSet<HotkeyDefinition>();
|
||||||
var template = templates.Get(templateNode.Value.Value);
|
var template = templates.Get(templateNode.Value.Value);
|
||||||
|
var remapDialogRoot = panel.Get("HOTKEY_DIALOG_ROOT");
|
||||||
|
var remapDialogPlaceholder = panel.GetOrNull("HOTKEY_DIALOG_PLACEHOLDER");
|
||||||
foreach (var t in types)
|
foreach (var t in types)
|
||||||
foreach (var hd in modData.Hotkeys.Definitions.Where(k => k.Types.Contains(t)))
|
foreach (var hd in modData.Hotkeys.Definitions.Where(k => k.Types.Contains(t)))
|
||||||
if (added.Add(hd))
|
if (added.Add(hd))
|
||||||
BindHotkeyPref(hd, modData.Hotkeys, template, hotkeyList);
|
BindHotkeyPref(hd, modData.Hotkeys, template, hotkeyList, remapDialogRoot, remapDialogPlaceholder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,16 +514,22 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
gs.AllowZoom = dgs.AllowZoom;
|
gs.AllowZoom = dgs.AllowZoom;
|
||||||
gs.ZoomModifier = dgs.ZoomModifier;
|
gs.ZoomModifier = dgs.ZoomModifier;
|
||||||
|
|
||||||
|
panel.Get<SliderWidget>("SCROLLSPEED_SLIDER").Value = gs.ViewportEdgeScrollStep;
|
||||||
|
panel.Get<SliderWidget>("UI_SCROLLSPEED_SLIDER").Value = gs.UIScrollSpeed;
|
||||||
|
|
||||||
|
MakeMouseFocusSettingsLive();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Action ResetHotkeysPanel(Widget panel)
|
||||||
|
{
|
||||||
|
return () =>
|
||||||
|
{
|
||||||
foreach (var hd in modData.Hotkeys.Definitions)
|
foreach (var hd in modData.Hotkeys.Definitions)
|
||||||
{
|
{
|
||||||
modData.Hotkeys.Set(hd.Name, hd.Default);
|
modData.Hotkeys.Set(hd.Name, hd.Default);
|
||||||
panel.Get(hd.Name).Get<HotkeyEntryWidget>("HOTKEY").Key = hd.Default;
|
panel.Get(hd.Name).Get<HotkeyEntryWidget>("HOTKEY").Key = hd.Default;
|
||||||
}
|
}
|
||||||
|
|
||||||
panel.Get<SliderWidget>("SCROLLSPEED_SLIDER").Value = gs.ViewportEdgeScrollStep;
|
|
||||||
panel.Get<SliderWidget>("UI_SCROLLSPEED_SLIDER").Value = gs.UIScrollSpeed;
|
|
||||||
|
|
||||||
MakeMouseFocusSettingsLive();
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
83
mods/cnc/chrome/dialog-hotkey.yaml
Normal file
83
mods/cnc/chrome/dialog-hotkey.yaml
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
Background@HOTKEY_DIALOG:
|
||||||
|
Logic: HotkeyDialogLogic
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Background: panel-gray
|
||||||
|
Children:
|
||||||
|
Label@HOTKEY_LABEL:
|
||||||
|
X: 15
|
||||||
|
Y: 14
|
||||||
|
Width: PARENT_RIGHT - 40
|
||||||
|
Height: 25
|
||||||
|
Font: Bold
|
||||||
|
HotkeyEntry@HOTKEY_ENTRY:
|
||||||
|
X: 15
|
||||||
|
Y: 40
|
||||||
|
Width: 382
|
||||||
|
Height: 25
|
||||||
|
Container@NOTICES:
|
||||||
|
X: 15
|
||||||
|
Y: 65
|
||||||
|
Width: PARENT_RIGHT - 40
|
||||||
|
Height: 25
|
||||||
|
Children:
|
||||||
|
Label@DEFAULT_NOTICE:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Font: Tiny
|
||||||
|
Align: Left
|
||||||
|
Text: This is the default hotkey.
|
||||||
|
Label@ORIGINAL_NOTICE:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Font: Tiny
|
||||||
|
Align: Left
|
||||||
|
Text: The default is "{0}"
|
||||||
|
Label@DUPLICATE_NOTICE:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Font: Tiny
|
||||||
|
Align: Left
|
||||||
|
Text: This hotkey is already used for "{0}"
|
||||||
|
Button@CLEAR_BUTTON:
|
||||||
|
X: PARENT_RIGHT - 65 - 15 - 2 * (WIDTH + 10)
|
||||||
|
Y: 40
|
||||||
|
Width: 25
|
||||||
|
Height: 25
|
||||||
|
TooltipText: Unbind the hotkey
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
Children:
|
||||||
|
Image:
|
||||||
|
ImageCollection: lobby-bits
|
||||||
|
ImageName: kick
|
||||||
|
X: 7
|
||||||
|
Y: 8
|
||||||
|
IgnoreMouseOver: True
|
||||||
|
Button@RESET_BUTTON:
|
||||||
|
X: PARENT_RIGHT - 65 - 15 - WIDTH - 10
|
||||||
|
Y: 40
|
||||||
|
Width: 25
|
||||||
|
Height: 25
|
||||||
|
TooltipText: Reset to default
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
Children:
|
||||||
|
Image@IMAGE_RELOAD:
|
||||||
|
X: 5
|
||||||
|
Y: 5
|
||||||
|
Width: 16
|
||||||
|
Height: 16
|
||||||
|
ImageCollection: reload-icon
|
||||||
|
ImageName: enabled
|
||||||
|
IgnoreMouseOver: True
|
||||||
|
Button@CANCEL_BUTTON:
|
||||||
|
X: PARENT_RIGHT - WIDTH - 15
|
||||||
|
Y: 40
|
||||||
|
Width: 65
|
||||||
|
Height: 25
|
||||||
|
Text: Cancel
|
||||||
|
TooltipText: Cancel the operation
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
TooltipContainer@TOOLTIP_CONTAINER:
|
||||||
@@ -40,22 +40,27 @@ Container@SETTINGS_PANEL:
|
|||||||
Container@TAB_CONTAINER:
|
Container@TAB_CONTAINER:
|
||||||
Children:
|
Children:
|
||||||
Button@DISPLAY_TAB:
|
Button@DISPLAY_TAB:
|
||||||
Width: 140
|
Width: 110
|
||||||
Height: 35
|
Height: 35
|
||||||
Text: Display
|
Text: Display
|
||||||
Button@AUDIO_TAB:
|
Button@AUDIO_TAB:
|
||||||
X: 150
|
X: WIDTH + 10
|
||||||
Width: 140
|
Width: 110
|
||||||
Height: 35
|
Height: 35
|
||||||
Text: Audio
|
Text: Audio
|
||||||
Button@INPUT_TAB:
|
Button@INPUT_TAB:
|
||||||
X: 300
|
X: 2 * (WIDTH + 10)
|
||||||
Width: 140
|
Width: 110
|
||||||
Height: 35
|
Height: 35
|
||||||
Text: Input
|
Text: Input
|
||||||
|
Button@HOTKEYS_TAB:
|
||||||
|
X: 3 * (WIDTH + 10)
|
||||||
|
Width: 110
|
||||||
|
Height: 35
|
||||||
|
Text: Hotkeys
|
||||||
Button@ADVANCED_TAB:
|
Button@ADVANCED_TAB:
|
||||||
X: 450
|
X: 4 * (WIDTH + 10)
|
||||||
Width: 140
|
Width: 110
|
||||||
Height: 35
|
Height: 35
|
||||||
Text: Advanced
|
Text: Advanced
|
||||||
Background@bg:
|
Background@bg:
|
||||||
@@ -459,13 +464,17 @@ Container@SETTINGS_PANEL:
|
|||||||
Font: Bold
|
Font: Bold
|
||||||
Text: Hotkeys
|
Text: Hotkeys
|
||||||
Align: Center
|
Align: Center
|
||||||
ScrollPanel@HOTKEY_LIST:
|
Container@HOTKEYS_PANEL:
|
||||||
X: 15
|
X: 15
|
||||||
Y: 185
|
Y: 15
|
||||||
Width: 560
|
Width: PARENT_RIGHT - 15
|
||||||
|
Height: PARENT_BOTTOM - 15
|
||||||
|
Children:
|
||||||
|
ScrollPanel@HOTKEY_LIST:
|
||||||
|
Width: PARENT_RIGHT - 15
|
||||||
TopBottomSpacing: 4
|
TopBottomSpacing: 4
|
||||||
ItemSpacing: 4
|
ItemSpacing: 4
|
||||||
Height: 160
|
Height: 210
|
||||||
Children:
|
Children:
|
||||||
ScrollItem@HEADER:
|
ScrollItem@HEADER:
|
||||||
Width: 528
|
Width: 528
|
||||||
@@ -489,10 +498,12 @@ Container@SETTINGS_PANEL:
|
|||||||
Width: PARENT_RIGHT - 85
|
Width: PARENT_RIGHT - 85
|
||||||
Height: 25
|
Height: 25
|
||||||
Align: Right
|
Align: Right
|
||||||
HotkeyEntry@HOTKEY:
|
Button@HOTKEY:
|
||||||
X: PARENT_RIGHT - WIDTH
|
X: PARENT_RIGHT - WIDTH
|
||||||
Width: 80
|
Width: 80
|
||||||
Height: 25
|
Height: 25
|
||||||
|
Align: Left
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
Container@THREE_COLUMN:
|
Container@THREE_COLUMN:
|
||||||
Width: 173
|
Width: 173
|
||||||
Height: 25
|
Height: 25
|
||||||
@@ -503,10 +514,29 @@ Container@SETTINGS_PANEL:
|
|||||||
Width: PARENT_RIGHT - 84
|
Width: PARENT_RIGHT - 84
|
||||||
Height: 25
|
Height: 25
|
||||||
Align: Right
|
Align: Right
|
||||||
HotkeyEntry@HOTKEY:
|
Button@HOTKEY:
|
||||||
X: PARENT_RIGHT - WIDTH + 1
|
X: PARENT_RIGHT - WIDTH + 1
|
||||||
Width: 80
|
Width: 80
|
||||||
Height: 25
|
Height: 25
|
||||||
|
Align: Left
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
Background@HOTKEY_DIALOG_PLACEHOLDER:
|
||||||
|
Y: 225
|
||||||
|
Width: PARENT_RIGHT - 15
|
||||||
|
Height: 105
|
||||||
|
Background: panel-gray
|
||||||
|
Children:
|
||||||
|
Label@HOTKEY_DIALOG_HELPTEXT:
|
||||||
|
Y: PARENT_BOTTOM / 2 - 12
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 25
|
||||||
|
Font: Tiny
|
||||||
|
Align: Center
|
||||||
|
Text: Click on a hotkey to start rebinding
|
||||||
|
Container@HOTKEY_DIALOG_ROOT:
|
||||||
|
Y: 225
|
||||||
|
Width: PARENT_RIGHT - 15
|
||||||
|
Height: 105
|
||||||
Container@ADVANCED_PANEL:
|
Container@ADVANCED_PANEL:
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
Height: PARENT_BOTTOM
|
Height: PARENT_BOTTOM
|
||||||
@@ -648,3 +678,4 @@ Container@SETTINGS_PANEL:
|
|||||||
Width: 140
|
Width: 140
|
||||||
Height: 35
|
Height: 35
|
||||||
Text: Reset
|
Text: Reset
|
||||||
|
TooltipContainer@TOOLTIP_CONTAINER:
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
ProductionTypeBuilding: E
|
ProductionTypeBuilding: E
|
||||||
Description: Building Tab
|
Description: Building Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeDefense: R
|
ProductionTypeDefense: R
|
||||||
Description: Defense Tab
|
Description: Defense Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeInfantry: T
|
ProductionTypeInfantry: T
|
||||||
Description: Infantry Tab
|
Description: Infantry Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeVehicle: Y
|
ProductionTypeVehicle: Y
|
||||||
Description: Vehicle Tab
|
Description: Vehicle Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeAircraft: U
|
ProductionTypeAircraft: U
|
||||||
Description: Aircraft Tab
|
Description: Aircraft Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ ChromeLayout:
|
|||||||
cnc|chrome/assetbrowser.yaml
|
cnc|chrome/assetbrowser.yaml
|
||||||
cnc|chrome/missionbrowser.yaml
|
cnc|chrome/missionbrowser.yaml
|
||||||
cnc|chrome/editor.yaml
|
cnc|chrome/editor.yaml
|
||||||
|
cnc|chrome/dialog-hotkey.yaml
|
||||||
|
|
||||||
Voices:
|
Voices:
|
||||||
cnc|audio/voices.yaml
|
cnc|audio/voices.yaml
|
||||||
|
|||||||
69
mods/common/chrome/dialog-hotkey.yaml
Normal file
69
mods/common/chrome/dialog-hotkey.yaml
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
Background@HOTKEY_DIALOG:
|
||||||
|
Logic: HotkeyDialogLogic
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Background: dialog3
|
||||||
|
Children:
|
||||||
|
Label@HOTKEY_LABEL:
|
||||||
|
X: 20
|
||||||
|
Y: 14
|
||||||
|
Width: PARENT_RIGHT - 40
|
||||||
|
Height: 25
|
||||||
|
Font: Bold
|
||||||
|
HotkeyEntry@HOTKEY_ENTRY:
|
||||||
|
X: 20
|
||||||
|
Y: 40
|
||||||
|
Width: 280
|
||||||
|
Height: 25
|
||||||
|
Container@NOTICES:
|
||||||
|
X: 20
|
||||||
|
Y: 65
|
||||||
|
Width: PARENT_RIGHT - 40
|
||||||
|
Height: 25
|
||||||
|
Children:
|
||||||
|
Label@DEFAULT_NOTICE:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Font: Tiny
|
||||||
|
Align: Left
|
||||||
|
Text: This is the default
|
||||||
|
Label@ORIGINAL_NOTICE:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Font: Tiny
|
||||||
|
Align: Left
|
||||||
|
Text: The default is "{0}"
|
||||||
|
Label@DUPLICATE_NOTICE:
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: PARENT_BOTTOM
|
||||||
|
Font: Tiny
|
||||||
|
Align: Left
|
||||||
|
Text: This hotkey is already used for "{0}"
|
||||||
|
Button@CLEAR_BUTTON:
|
||||||
|
X: PARENT_RIGHT - 3 * WIDTH - 40
|
||||||
|
Y: 41
|
||||||
|
Width: 65
|
||||||
|
Height: 25
|
||||||
|
Text: Clear
|
||||||
|
TooltipText: Unbind the hotkey
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
Button@RESET_BUTTON:
|
||||||
|
X: PARENT_RIGHT - 2 * WIDTH - 30
|
||||||
|
Y: 41
|
||||||
|
Width: 65
|
||||||
|
Height: 25
|
||||||
|
Text: Reset
|
||||||
|
TooltipText: Reset to default
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
Button@CANCEL_BUTTON:
|
||||||
|
X: PARENT_RIGHT - WIDTH - 20
|
||||||
|
Y: 41
|
||||||
|
Width: 65
|
||||||
|
Height: 25
|
||||||
|
Text: Cancel
|
||||||
|
TooltipText: Cancel the operation
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
TooltipTemplate: SIMPLE_TOOLTIP
|
||||||
|
TooltipContainer@TOOLTIP_CONTAINER:
|
||||||
@@ -58,25 +58,31 @@ Background@SETTINGS_PANEL:
|
|||||||
Height: 25
|
Height: 25
|
||||||
Children:
|
Children:
|
||||||
Button@DISPLAY_TAB:
|
Button@DISPLAY_TAB:
|
||||||
X: 115
|
X: 70
|
||||||
Width: 90
|
Width: 90
|
||||||
Height: 25
|
Height: 25
|
||||||
Text: Display
|
Text: Display
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Button@AUDIO_TAB:
|
Button@AUDIO_TAB:
|
||||||
X: 205
|
X: 70 + WIDTH
|
||||||
Width: 90
|
Width: 90
|
||||||
Height: 25
|
Height: 25
|
||||||
Text: Audio
|
Text: Audio
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Button@INPUT_TAB:
|
Button@INPUT_TAB:
|
||||||
X: 295
|
X: 70 + 2 * WIDTH
|
||||||
Width: 90
|
Width: 90
|
||||||
Height: 25
|
Height: 25
|
||||||
Text: Input
|
Text: Input
|
||||||
Font: Bold
|
Font: Bold
|
||||||
|
Button@HOTKEYS_TAB:
|
||||||
|
X: 70 + 3 * WIDTH
|
||||||
|
Width: 90
|
||||||
|
Height: 25
|
||||||
|
Text: Hotkeys
|
||||||
|
Font: Bold
|
||||||
Button@ADVANCED_TAB:
|
Button@ADVANCED_TAB:
|
||||||
X: 385
|
X: 70 + 4 * WIDTH
|
||||||
Width: 90
|
Width: 90
|
||||||
Height: 25
|
Height: 25
|
||||||
Text: Advanced
|
Text: Advanced
|
||||||
@@ -457,19 +463,19 @@ Background@SETTINGS_PANEL:
|
|||||||
Ticks: 5
|
Ticks: 5
|
||||||
MinimumValue: 1
|
MinimumValue: 1
|
||||||
MaximumValue: 100
|
MaximumValue: 100
|
||||||
Label@HOTKEYS_TITLE:
|
Container@HOTKEYS_PANEL:
|
||||||
Y: 165
|
X: 5
|
||||||
Width: PARENT_RIGHT
|
Y: 50
|
||||||
Font: Bold
|
Width: PARENT_RIGHT - 10
|
||||||
Text: Hotkeys
|
Height: PARENT_BOTTOM
|
||||||
Align: Center
|
Children:
|
||||||
ScrollPanel@HOTKEY_LIST:
|
ScrollPanel@HOTKEY_LIST:
|
||||||
X: 15
|
X: 15
|
||||||
Y: 185
|
Y: 40
|
||||||
Width: 560
|
Width: PARENT_RIGHT - 30
|
||||||
TopBottomSpacing: 4
|
TopBottomSpacing: 4
|
||||||
ItemSpacing: 4
|
ItemSpacing: 4
|
||||||
Height: 160
|
Height: 183
|
||||||
Children:
|
Children:
|
||||||
ScrollItem@HEADER:
|
ScrollItem@HEADER:
|
||||||
BaseName: scrollheader
|
BaseName: scrollheader
|
||||||
@@ -504,10 +510,12 @@ Background@SETTINGS_PANEL:
|
|||||||
Width: PARENT_RIGHT - 85
|
Width: PARENT_RIGHT - 85
|
||||||
Height: 25
|
Height: 25
|
||||||
Align: Right
|
Align: Right
|
||||||
HotkeyEntry@HOTKEY:
|
Button@HOTKEY:
|
||||||
X: PARENT_RIGHT - WIDTH
|
X: PARENT_RIGHT - WIDTH
|
||||||
Width: 80
|
Width: 80
|
||||||
Height: 25
|
Height: 25
|
||||||
|
Align: Left
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
Container@THREE_COLUMN:
|
Container@THREE_COLUMN:
|
||||||
Width: 173
|
Width: 173
|
||||||
Height: 25
|
Height: 25
|
||||||
@@ -518,10 +526,31 @@ Background@SETTINGS_PANEL:
|
|||||||
Width: PARENT_RIGHT - 84
|
Width: PARENT_RIGHT - 84
|
||||||
Height: 25
|
Height: 25
|
||||||
Align: Right
|
Align: Right
|
||||||
HotkeyEntry@HOTKEY:
|
Button@HOTKEY:
|
||||||
X: PARENT_RIGHT - WIDTH + 1
|
X: PARENT_RIGHT - WIDTH + 1
|
||||||
Width: 80
|
Width: 80
|
||||||
Height: 25
|
Height: 25
|
||||||
|
Align: Left
|
||||||
|
TooltipContainer: TOOLTIP_CONTAINER
|
||||||
|
Background@HOTKEY_DIALOG_PLACEHOLDER:
|
||||||
|
X: 15
|
||||||
|
Y: 232
|
||||||
|
Width: PARENT_RIGHT - 30
|
||||||
|
Height: 108
|
||||||
|
Background: dialog3
|
||||||
|
Children:
|
||||||
|
Label@HOTKEY_DIALOG_HELPTEXT:
|
||||||
|
Y: PARENT_BOTTOM / 2 - 12
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 25
|
||||||
|
Font: Tiny
|
||||||
|
Align: Center
|
||||||
|
Text: Click on a hotkey to start rebinding
|
||||||
|
Container@HOTKEY_DIALOG_ROOT:
|
||||||
|
X: 15
|
||||||
|
Y: 232
|
||||||
|
Width: PARENT_RIGHT - 30
|
||||||
|
Height: 108
|
||||||
Container@ADVANCED_PANEL:
|
Container@ADVANCED_PANEL:
|
||||||
X: 5
|
X: 5
|
||||||
Y: 50
|
Y: 50
|
||||||
@@ -647,3 +676,4 @@ Background@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Strict Activity checking
|
Text: Strict Activity checking
|
||||||
|
TooltipContainer@TOOLTIP_CONTAINER:
|
||||||
|
|||||||
@@ -1,111 +1,111 @@
|
|||||||
CycleBase: H
|
CycleBase: H
|
||||||
Description: Jump to base
|
Description: Jump to base
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
ToLastEvent: SPACE
|
ToLastEvent: SPACE
|
||||||
Description: Jump to last radar event
|
Description: Jump to last radar event
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
ToSelection: HOME
|
ToSelection: HOME
|
||||||
Description: Jump to selection
|
Description: Jump to selection
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
SelectAllUnits: Q
|
SelectAllUnits: Q
|
||||||
Description: Select all combat units
|
Description: Select all combat units
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
SelectUnitsByType: W
|
SelectUnitsByType: W
|
||||||
Description: Select units by type
|
Description: Select units by type
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
RemoveFromControlGroup:
|
RemoveFromControlGroup:
|
||||||
Description: Remove from control group
|
Description: Remove from control group
|
||||||
Types: World
|
Types: World, Player
|
||||||
|
|
||||||
Pause: PAUSE
|
Pause: PAUSE
|
||||||
Description: Pause / Unpause
|
Description: Pause / Unpause
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
Sell: Z
|
Sell: Z
|
||||||
Description: Sell mode
|
Description: Sell mode
|
||||||
Types: OrderGenerator
|
Types: OrderGenerator, Player
|
||||||
|
|
||||||
Repair: C
|
Repair: C
|
||||||
Description: Repair mode
|
Description: Repair mode
|
||||||
Types: OrderGenerator
|
Types: OrderGenerator, Player
|
||||||
|
|
||||||
PlaceBeacon: B
|
PlaceBeacon: B
|
||||||
Description: Place beacon
|
Description: Place beacon
|
||||||
Types: OrderGenerator
|
Types: OrderGenerator, Player, Spectator
|
||||||
|
|
||||||
CycleStatusBars: COMMA
|
CycleStatusBars: COMMA
|
||||||
Description: Cycle status bars display
|
Description: Cycle status bars display
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
TogglePixelDouble: PERIOD
|
TogglePixelDouble: PERIOD
|
||||||
Description: Toggle pixel doubling
|
Description: Toggle pixel doubling
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
ToggleMute: M
|
ToggleMute: M
|
||||||
Description: Toggle audio mute
|
Description: Toggle audio mute
|
||||||
Types: World, Menu
|
Types: World, Menu, Player, Spectator
|
||||||
|
|
||||||
TogglePlayerStanceColor: COMMA Ctrl
|
TogglePlayerStanceColor: COMMA Ctrl
|
||||||
Description: Toggle player stance colors
|
Description: Toggle player stance colors
|
||||||
Types: World
|
Types: World, Player, Spectator
|
||||||
|
|
||||||
TakeScreenshot: P Ctrl
|
TakeScreenshot: P Ctrl
|
||||||
Description: Take screenshot
|
Description: Take screenshot
|
||||||
Types: World, Menu
|
Types: World, Menu, Player, Spectator
|
||||||
|
|
||||||
AttackMove: A
|
AttackMove: A
|
||||||
Description: Attack Move
|
Description: Attack Move
|
||||||
Types: Unit
|
Types: Unit, Player
|
||||||
|
|
||||||
Stop: S
|
Stop: S
|
||||||
Description: Stop
|
Description: Stop
|
||||||
Types: Unit
|
Types: Unit, Player
|
||||||
|
|
||||||
Scatter: X Ctrl
|
Scatter: X Ctrl
|
||||||
Description: Scatter
|
Description: Scatter
|
||||||
Types: Unit
|
Types: Unit, Player
|
||||||
|
|
||||||
Deploy: F
|
Deploy: F
|
||||||
Description: Deploy
|
Description: Deploy
|
||||||
Types: Unit
|
Types: Unit, Player
|
||||||
|
|
||||||
Guard: D
|
Guard: D
|
||||||
Description: Guard
|
Description: Guard
|
||||||
Types: Unit
|
Types: Unit, Player
|
||||||
|
|
||||||
StanceAttackAnything: A Alt
|
StanceAttackAnything: A Alt
|
||||||
Description: Attack anything
|
Description: Attack anything
|
||||||
Types: Stance
|
Types: Stance, Player
|
||||||
|
|
||||||
StanceDefend: S Alt
|
StanceDefend: S Alt
|
||||||
Description: Defend
|
Description: Defend
|
||||||
Types: Stance
|
Types: Stance, Player
|
||||||
|
|
||||||
StanceReturnFire: D Alt
|
StanceReturnFire: D Alt
|
||||||
Description: Return fire
|
Description: Return fire
|
||||||
Types: Stance
|
Types: Stance, Player
|
||||||
|
|
||||||
StanceHoldFire: F Alt
|
StanceHoldFire: F Alt
|
||||||
Description: Hold fire
|
Description: Hold fire
|
||||||
Types: Stance
|
Types: Stance, Player
|
||||||
|
|
||||||
StopMusic: AUDIOSTOP
|
StopMusic: AUDIOSTOP
|
||||||
Description: Stop
|
Description: Stop
|
||||||
Types: Music
|
Types: Music, Player, Spectator
|
||||||
|
|
||||||
PauseMusic: AUDIOPLAY
|
PauseMusic: AUDIOPLAY
|
||||||
Description: Pause or Resume
|
Description: Pause or Resume
|
||||||
Types: Music
|
Types: Music, Player, Spectator
|
||||||
|
|
||||||
PrevMusic: AUDIOPREV
|
PrevMusic: AUDIOPREV
|
||||||
Description: Previous
|
Description: Previous
|
||||||
Types: Music
|
Types: Music, Player, Spectator
|
||||||
|
|
||||||
NextMusic: AUDIONEXT
|
NextMusic: AUDIONEXT
|
||||||
Description: Next
|
Description: Next
|
||||||
Types: Music
|
Types: Music, Player, Spectator
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
ObserverCombinedView: MINUS
|
ObserverCombinedView: MINUS
|
||||||
Description: All Players
|
Description: All Players
|
||||||
Types: Observer
|
Types: Observer, Spectator
|
||||||
|
|
||||||
ObserverWorldView: EQUALS
|
ObserverWorldView: EQUALS
|
||||||
Description: Disable Shroud
|
Description: Disable Shroud
|
||||||
Types: Observer
|
Types: Observer, Spectator
|
||||||
|
|
||||||
ReplaySpeedSlow: F9
|
ReplaySpeedSlow: F9
|
||||||
Description: Slow speed
|
Description: Slow speed
|
||||||
Types: Replay
|
Types: Replay, Spectator
|
||||||
|
|
||||||
ReplaySpeedRegular: F10
|
ReplaySpeedRegular: F10
|
||||||
Description: Regular speed
|
Description: Regular speed
|
||||||
Types: Replay
|
Types: Replay, Spectator
|
||||||
|
|
||||||
ReplaySpeedFast: F11
|
ReplaySpeedFast: F11
|
||||||
Description: Fast speed
|
Description: Fast speed
|
||||||
Types: Replay
|
Types: Replay, Spectator
|
||||||
|
|
||||||
ReplaySpeedMax: F12
|
ReplaySpeedMax: F12
|
||||||
Description: Maximum speed
|
Description: Maximum speed
|
||||||
Types: Replay
|
Types: Replay, Spectator
|
||||||
|
|
||||||
StatisticsNone: F1
|
StatisticsNone: F1
|
||||||
Description: Disable statistics
|
Description: Disable statistics
|
||||||
@@ -28,15 +28,15 @@ StatisticsNone: F1
|
|||||||
|
|
||||||
StatisticsBasic: F2
|
StatisticsBasic: F2
|
||||||
Description: Basic statistics
|
Description: Basic statistics
|
||||||
Types: Observer, Replay
|
Types: Observer, Replay, Spectator
|
||||||
|
|
||||||
StatisticsEconomy: F3
|
StatisticsEconomy: F3
|
||||||
Description: Economy statistics
|
Description: Economy statistics
|
||||||
Types: Observer, Replay
|
Types: Observer, Replay, Spectator
|
||||||
|
|
||||||
StatisticsProduction: F4
|
StatisticsProduction: F4
|
||||||
Description: Production statistics
|
Description: Production statistics
|
||||||
Types: Observer, Replay
|
Types: Observer, Replay, Spectator
|
||||||
|
|
||||||
StatisticsSupportPowers: F5
|
StatisticsSupportPowers: F5
|
||||||
Description: Support Power statistics
|
Description: Support Power statistics
|
||||||
@@ -44,12 +44,12 @@ StatisticsSupportPowers: F5
|
|||||||
|
|
||||||
StatisticsCombat: F6
|
StatisticsCombat: F6
|
||||||
Description: Combat statistics
|
Description: Combat statistics
|
||||||
Types: Observer, Replay
|
Types: Observer, Replay, Spectator
|
||||||
|
|
||||||
StatisticsGraph: F7
|
StatisticsGraph: F7
|
||||||
Description: Statistics graph
|
Description: Statistics graph
|
||||||
Types: Observer, Replay
|
Types: Observer, Replay, Spectator
|
||||||
|
|
||||||
StatisticsArmyGraph: F8
|
StatisticsArmyGraph: F8
|
||||||
Description: Army value graph
|
Description: Army value graph
|
||||||
Types: Observer, Replay
|
Types: Observer, Replay, Spectator
|
||||||
|
|||||||
@@ -1,99 +1,99 @@
|
|||||||
CycleProductionBuildings: TAB
|
CycleProductionBuildings: TAB
|
||||||
Description: Next facility
|
Description: Next facility
|
||||||
Types: Production
|
Types: Production, Player, Spectator
|
||||||
|
|
||||||
Production01: F1
|
Production01: F1
|
||||||
Description: Slot 01
|
Description: Slot 01
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production02: F2
|
Production02: F2
|
||||||
Description: Slot 02
|
Description: Slot 02
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production03: F3
|
Production03: F3
|
||||||
Description: Slot 03
|
Description: Slot 03
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production04: F4
|
Production04: F4
|
||||||
Description: Slot 04
|
Description: Slot 04
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production05: F5
|
Production05: F5
|
||||||
Description: Slot 05
|
Description: Slot 05
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production06: F6
|
Production06: F6
|
||||||
Description: Slot 06
|
Description: Slot 06
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production07: F7
|
Production07: F7
|
||||||
Description: Slot 07
|
Description: Slot 07
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production08: F8
|
Production08: F8
|
||||||
Description: Slot 08
|
Description: Slot 08
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production09: F9
|
Production09: F9
|
||||||
Description: Slot 09
|
Description: Slot 09
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production10: F10
|
Production10: F10
|
||||||
Description: Slot 10
|
Description: Slot 10
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production11: F11
|
Production11: F11
|
||||||
Description: Slot 11
|
Description: Slot 11
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production12: F12
|
Production12: F12
|
||||||
Description: Slot 12
|
Description: Slot 12
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production13: F1 CTRL
|
Production13: F1 CTRL
|
||||||
Description: Slot 13
|
Description: Slot 13
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production14: F2 CTRL
|
Production14: F2 CTRL
|
||||||
Description: Slot 14
|
Description: Slot 14
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production15: F3 CTRL
|
Production15: F3 CTRL
|
||||||
Description: Slot 15
|
Description: Slot 15
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production16: F4 CTRL
|
Production16: F4 CTRL
|
||||||
Description: Slot 16
|
Description: Slot 16
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production17: F5 CTRL
|
Production17: F5 CTRL
|
||||||
Description: Slot 17
|
Description: Slot 17
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production18: F6 CTRL
|
Production18: F6 CTRL
|
||||||
Description: Slot 18
|
Description: Slot 18
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production19: F7 CTRL
|
Production19: F7 CTRL
|
||||||
Description: Slot 19
|
Description: Slot 19
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production20: F8 CTRL
|
Production20: F8 CTRL
|
||||||
Description: Slot 20
|
Description: Slot 20
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production21: F9 CTRL
|
Production21: F9 CTRL
|
||||||
Description: Slot 21
|
Description: Slot 21
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production22: F10 CTRL
|
Production22: F10 CTRL
|
||||||
Description: Slot 22
|
Description: Slot 22
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production23: F11 CTRL
|
Production23: F11 CTRL
|
||||||
Description: Slot 23
|
Description: Slot 23
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|
||||||
Production24: F12 CTRL
|
Production24: F12 CTRL
|
||||||
Description: Slot 24
|
Description: Slot 24
|
||||||
Types: ProductionSlot
|
Types: ProductionSlot, Player
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
NextProductionTab: PAGEDOWN
|
NextProductionTab: PAGEDOWN
|
||||||
Description: Next tab
|
Description: Next tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
PreviousProductionTab: PAGEUP
|
PreviousProductionTab: PAGEUP
|
||||||
Description: Previous tab
|
Description: Previous tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
SupportPower01:
|
SupportPower01:
|
||||||
Description: Slot 01
|
Description: Slot 01
|
||||||
Types: SupportPower
|
Types: SupportPower, Player
|
||||||
|
|
||||||
SupportPower02:
|
SupportPower02:
|
||||||
Description: Slot 02
|
Description: Slot 02
|
||||||
Types: SupportPower
|
Types: SupportPower, Player
|
||||||
|
|
||||||
SupportPower03:
|
SupportPower03:
|
||||||
Description: Slot 03
|
Description: Slot 03
|
||||||
Types: SupportPower
|
Types: SupportPower, Player
|
||||||
|
|
||||||
SupportPower04:
|
SupportPower04:
|
||||||
Description: Slot 04
|
Description: Slot 04
|
||||||
Types: SupportPower
|
Types: SupportPower, Player
|
||||||
|
|
||||||
SupportPower05:
|
SupportPower05:
|
||||||
Description: Slot 05
|
Description: Slot 05
|
||||||
Types: SupportPower
|
Types: SupportPower, Player
|
||||||
|
|
||||||
SupportPower06:
|
SupportPower06:
|
||||||
Description: Slot 06
|
Description: Slot 06
|
||||||
Types: SupportPower
|
Types: SupportPower, Player
|
||||||
|
|||||||
@@ -1,63 +1,63 @@
|
|||||||
MapScrollUp: UP
|
MapScrollUp: UP
|
||||||
Description: Scroll up
|
Description: Scroll up
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapScrollDown: DOWN
|
MapScrollDown: DOWN
|
||||||
Description: Scroll down
|
Description: Scroll down
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapScrollLeft: LEFT
|
MapScrollLeft: LEFT
|
||||||
Description: Scroll left
|
Description: Scroll left
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapScrollRight: RIGHT
|
MapScrollRight: RIGHT
|
||||||
Description: Scroll right
|
Description: Scroll right
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapJumpToTopEdge: UP Alt
|
MapJumpToTopEdge: UP Alt
|
||||||
Description: Jump to top edge
|
Description: Jump to top edge
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapJumpToBottomEdge: DOWN Alt
|
MapJumpToBottomEdge: DOWN Alt
|
||||||
Description: Jump to bottom edge
|
Description: Jump to bottom edge
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapJumpToLeftEdge: LEFT Alt
|
MapJumpToLeftEdge: LEFT Alt
|
||||||
Description: Jump to left edge
|
Description: Jump to left edge
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapJumpToRightEdge: RIGHT Alt
|
MapJumpToRightEdge: RIGHT Alt
|
||||||
Description: Jump to right edge
|
Description: Jump to right edge
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkSave01: Q Ctrl
|
MapBookmarkSave01: Q Ctrl
|
||||||
Description: Record bookmark 1
|
Description: Record bookmark 1
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkRestore01: Q Alt
|
MapBookmarkRestore01: Q Alt
|
||||||
Description: Jump to bookmark 1
|
Description: Jump to bookmark 1
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkSave02: W Ctrl
|
MapBookmarkSave02: W Ctrl
|
||||||
Description: Record bookmark 2
|
Description: Record bookmark 2
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkRestore02: W Alt
|
MapBookmarkRestore02: W Alt
|
||||||
Description: Jump to bookmark 2
|
Description: Jump to bookmark 2
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkSave03: E Ctrl
|
MapBookmarkSave03: E Ctrl
|
||||||
Description: Record bookmark 3
|
Description: Record bookmark 3
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkRestore03: E Alt
|
MapBookmarkRestore03: E Alt
|
||||||
Description: Jump to bookmark 3
|
Description: Jump to bookmark 3
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkSave04: R Ctrl
|
MapBookmarkSave04: R Ctrl
|
||||||
Description: Record bookmark 4
|
Description: Record bookmark 4
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|
||||||
MapBookmarkRestore04: R Alt
|
MapBookmarkRestore04: R Alt
|
||||||
Description: Jump to bookmark 4
|
Description: Jump to bookmark 4
|
||||||
Types: Viewport
|
Types: Viewport, Player, Spectator
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ Metrics:
|
|||||||
GameStartedColor: FFA500
|
GameStartedColor: FFA500
|
||||||
HotkeyColor: FFFFFF
|
HotkeyColor: FFFFFF
|
||||||
HotkeyColorDisabled: 808080
|
HotkeyColorDisabled: 808080
|
||||||
|
HotkeyColorInvalid: FF0000
|
||||||
HotkeyFont: Regular
|
HotkeyFont: Regular
|
||||||
IncompatibleGameColor: A9A9A9
|
IncompatibleGameColor: A9A9A9
|
||||||
IncompatibleGameStartedColor: D2691E
|
IncompatibleGameStartedColor: D2691E
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
ProductionTypeBuilding: E
|
ProductionTypeBuilding: E
|
||||||
Description: Building Tab
|
Description: Building Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeUpgrade: R
|
ProductionTypeUpgrade: R
|
||||||
Description: Upgrade Tab
|
Description: Upgrade Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeInfantry: T
|
ProductionTypeInfantry: T
|
||||||
Description: Infantry Tab
|
Description: Infantry Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeVehicle: Y
|
ProductionTypeVehicle: Y
|
||||||
Description: Vehicle Tab
|
Description: Vehicle Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeAircraft: U
|
ProductionTypeAircraft: U
|
||||||
Description: Aircraft Tab
|
Description: Aircraft Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeTank: I
|
ProductionTypeTank: I
|
||||||
Description: Tank Tab
|
Description: Tank Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeMerchant: O
|
ProductionTypeMerchant: O
|
||||||
Description: Starport Tab
|
Description: Starport Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
PowerDown: X
|
PowerDown: X
|
||||||
Description: Power-down mode
|
Description: Power-down mode
|
||||||
Types: OrderGenerator
|
Types: OrderGenerator, Player
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ ChromeLayout:
|
|||||||
common|chrome/replaybrowser.yaml
|
common|chrome/replaybrowser.yaml
|
||||||
common|chrome/gamesave-browser.yaml
|
common|chrome/gamesave-browser.yaml
|
||||||
common|chrome/gamesave-loading.yaml
|
common|chrome/gamesave-loading.yaml
|
||||||
|
common|chrome/dialog-hotkey.yaml
|
||||||
|
|
||||||
Weapons:
|
Weapons:
|
||||||
d2k|weapons/debris.yaml
|
d2k|weapons/debris.yaml
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
ProductionTypeBuilding: E
|
ProductionTypeBuilding: E
|
||||||
Description: Building Tab
|
Description: Building Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeDefense: R
|
ProductionTypeDefense: R
|
||||||
Description: Defense Tab
|
Description: Defense Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeInfantry: T
|
ProductionTypeInfantry: T
|
||||||
Description: Infantry Tab
|
Description: Infantry Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeVehicle: Y
|
ProductionTypeVehicle: Y
|
||||||
Description: Vehicle Tab
|
Description: Vehicle Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeAircraft: U
|
ProductionTypeAircraft: U
|
||||||
Description: Aircraft Tab
|
Description: Aircraft Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeNaval: I
|
ProductionTypeNaval: I
|
||||||
Description: Naval Tab
|
Description: Naval Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
PowerDown: X
|
PowerDown: X
|
||||||
Description: Power-down mode
|
Description: Power-down mode
|
||||||
Types: OrderGenerator
|
Types: OrderGenerator, Player
|
||||||
|
|||||||
@@ -124,6 +124,7 @@ ChromeLayout:
|
|||||||
common|chrome/confirmation-dialogs.yaml
|
common|chrome/confirmation-dialogs.yaml
|
||||||
common|chrome/editor.yaml
|
common|chrome/editor.yaml
|
||||||
common|chrome/playerprofile.yaml
|
common|chrome/playerprofile.yaml
|
||||||
|
common|chrome/dialog-hotkey.yaml
|
||||||
|
|
||||||
Weapons:
|
Weapons:
|
||||||
ra|weapons/explosions.yaml
|
ra|weapons/explosions.yaml
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
ProductionTypeBuilding: E
|
ProductionTypeBuilding: E
|
||||||
Description: Building Tab
|
Description: Building Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeDefense: R
|
ProductionTypeDefense: R
|
||||||
Description: Defense Tab
|
Description: Defense Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeInfantry: T
|
ProductionTypeInfantry: T
|
||||||
Description: Infantry Tab
|
Description: Infantry Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeVehicle: Y
|
ProductionTypeVehicle: Y
|
||||||
Description: Vehicle Tab
|
Description: Vehicle Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
ProductionTypeAircraft: U
|
ProductionTypeAircraft: U
|
||||||
Description: Aircraft Tab
|
Description: Aircraft Tab
|
||||||
Types: Production
|
Types: Production, Player
|
||||||
|
|
||||||
PowerDown: X
|
PowerDown: X
|
||||||
Description: Power-down mode
|
Description: Power-down mode
|
||||||
Types: OrderGenerator
|
Types: OrderGenerator, Player
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ ChromeLayout:
|
|||||||
common|chrome/missionbrowser.yaml
|
common|chrome/missionbrowser.yaml
|
||||||
common|chrome/confirmation-dialogs.yaml
|
common|chrome/confirmation-dialogs.yaml
|
||||||
common|chrome/editor.yaml
|
common|chrome/editor.yaml
|
||||||
|
common|chrome/dialog-hotkey.yaml
|
||||||
|
|
||||||
Voices:
|
Voices:
|
||||||
ts|audio/voices.yaml
|
ts|audio/voices.yaml
|
||||||
|
|||||||
Reference in New Issue
Block a user