Add input style to match other, non-C&C, RTS games

Uses left-click for targeted orders (attack move, guard, selecting movement types from the command bar, etc.) and right-click for contextual ones. Works like basically all non-C&C games

Removed GameSettings.UseClassicMouseStyle, as it is replaced by MouseControlStyle


Changed Minelayer and Chronotank teleport to UnitOrderGenerator

Fixes bug with Modern controls issuing a move order cancelling a mine field order

Better organizes all unit orders into a single order generator base class, rather than having their logic spread across multiple base classes, which required some hacks to get the control logic to match
This commit is contained in:
Dominic Renaud
2025-11-10 22:12:48 -08:00
committed by Paul Chote
parent c47ebfbb52
commit f8eefe310c
22 changed files with 530 additions and 157 deletions

View File

@@ -20,6 +20,7 @@ using OpenRA.Primitives;
namespace OpenRA namespace OpenRA
{ {
public enum MouseControlStyle { Classic, Modern, OtherRTS }
public enum MouseScrollType { Disabled, Standard, Inverted, Joystick } public enum MouseScrollType { Disabled, Standard, Inverted, Joystick }
public enum StatusBarsType { Standard, DamageShow, AlwaysShow } public enum StatusBarsType { Standard, DamageShow, AlwaysShow }
public enum TargetLinesType { Disabled, Manual, Automatic } public enum TargetLinesType { Disabled, Manual, Automatic }
@@ -319,6 +320,7 @@ namespace OpenRA
public int ViewportEdgeScrollMargin = 5; public int ViewportEdgeScrollMargin = 5;
public bool LockMouseWindow = false; public bool LockMouseWindow = false;
public MouseControlStyle MouseControlStyle = MouseControlStyle.Modern;
public MouseScrollType MouseScroll = MouseScrollType.Joystick; public MouseScrollType MouseScroll = MouseScrollType.Joystick;
public float ViewportEdgeScrollStep = 30f; public float ViewportEdgeScrollStep = 30f;
public float UIScrollSpeed = 50f; public float UIScrollSpeed = 50f;
@@ -326,7 +328,6 @@ namespace OpenRA
public int SelectionDeadzone = 24; public int SelectionDeadzone = 24;
public int MouseScrollDeadzone = 8; public int MouseScrollDeadzone = 8;
public bool UseClassicMouseStyle = false;
public bool UseAlternateScrollButton = false; public bool UseAlternateScrollButton = false;
public bool HideReplayChat = false; public bool HideReplayChat = false;
@@ -361,8 +362,9 @@ namespace OpenRA
switch (actionType) switch (actionType)
{ {
case MouseActionType.ConfirmOrder: case MouseActionType.ConfirmOrder:
return MouseControlStyle == MouseControlStyle.Modern ? MouseButton.Right : MouseButton.Left;
case MouseActionType.Contextual: case MouseActionType.Contextual:
return UseClassicMouseStyle ? MouseButton.Left : MouseButton.Right; return MouseControlStyle == MouseControlStyle.Classic ? MouseButton.Left : MouseButton.Right;
default: return MouseButton.Left; default: return MouseButton.Left;
} }
} }

View File

@@ -210,7 +210,7 @@ namespace OpenRA.Mods.Cnc.Traits
} }
} }
sealed class PortableChronoOrderGenerator : OrderGenerator sealed class PortableChronoOrderGenerator : UnitOrderGenerator
{ {
readonly Actor self; readonly Actor self;
readonly PortableChrono portableChrono; readonly PortableChrono portableChrono;
@@ -218,8 +218,10 @@ namespace OpenRA.Mods.Cnc.Traits
protected override MouseActionType ActionType => MouseActionType.ConfirmOrder; protected override MouseActionType ActionType => MouseActionType.ConfirmOrder;
public override bool ClearSelectionOnLeftClick => false;
public PortableChronoOrderGenerator(Actor self, PortableChrono portableChrono) public PortableChronoOrderGenerator(Actor self, PortableChrono portableChrono)
: base(self.World, false) : base(self.World)
{ {
this.self = self; this.self = self;
this.portableChrono = portableChrono; this.portableChrono = portableChrono;
@@ -236,13 +238,13 @@ namespace OpenRA.Mods.Cnc.Traits
} }
} }
protected override void SelectionChanged(World world, IEnumerable<Actor> selected) public override void SelectionChanged(World world, IEnumerable<Actor> selected)
{ {
if (!selected.Contains(self)) if (!selected.Contains(self))
world.CancelInputMode(); world.CancelInputMode();
} }
protected override void Tick(World world) public override void Tick(World world)
{ {
if (portableChrono.IsTraitDisabled || portableChrono.IsTraitPaused) if (portableChrono.IsTraitDisabled || portableChrono.IsTraitPaused)
{ {
@@ -250,11 +252,11 @@ namespace OpenRA.Mods.Cnc.Traits
} }
} }
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } public override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; } public override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) public override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world)
{ {
if (!self.IsInWorld || self.Owner != self.World.LocalPlayer) if (!self.IsInWorld || self.Owner != self.World.LocalPlayer)
yield break; yield break;
@@ -272,7 +274,7 @@ namespace OpenRA.Mods.Cnc.Traits
info.CircleBorderWidth); info.CircleBorderWidth);
} }
protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
if (self.IsInWorld && self.Location != cell if (self.IsInWorld && self.Location != cell
&& portableChrono.CanTeleport && self.Owner.Shroud.IsExplored(cell)) && portableChrono.CanTeleport && self.Owner.Shroud.IsExplored(cell))

View File

@@ -26,15 +26,17 @@ namespace OpenRA.Mods.Common.Orders
this.cancelOnFirstUse = cancelOnFirstUse; this.cancelOnFirstUse = cancelOnFirstUse;
} }
public override IEnumerable<Order> Order(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
mi.Modifiers |= Modifiers; mi.Modifiers |= Modifiers;
if ((cancelOnFirstUse && !mi.Modifiers.HasModifier(Modifiers.Shift)) || mi.Button == CancelButton) if ((cancelOnFirstUse && !mi.Modifiers.HasModifier(Modifiers.Shift)) || mi.Button == CancelButton)
world.CancelInputMode(); world.CancelInputMode();
return base.Order(world, cell, worldPixel, mi); return base.OrderInner(world, cell, worldPixel, mi);
} }
public override bool ClearSelectionOnLeftClick => false;
public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
mi.Modifiers |= Modifiers; mi.Modifiers |= Modifiers;

View File

@@ -31,14 +31,8 @@ namespace OpenRA.Mods.Common.Orders
this.subjects = subjects; this.subjects = subjects;
} }
public override IEnumerable<Order> Order(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
if (mi.Button != ActionButton)
{
world.CancelInputMode();
yield break;
}
var target = FriendlyGuardableUnits(world, mi).FirstOrDefault(); var target = FriendlyGuardableUnits(world, mi).FirstOrDefault();
if (target == null) if (target == null)
yield break; yield break;

View File

@@ -20,10 +20,10 @@ namespace OpenRA.Mods.Common.Orders
protected abstract MouseActionType ActionType { get; } protected abstract MouseActionType ActionType { get; }
readonly GameSettings gameSettings; readonly GameSettings gameSettings;
protected OrderGenerator(World world, bool classicClearSelection = true) protected OrderGenerator(World world)
{ {
gameSettings = Game.Settings.Game; gameSettings = Game.Settings.Game;
if (classicClearSelection && gameSettings.UseClassicMouseStyle) if (gameSettings.MouseControlStyle == MouseControlStyle.Classic)
world.Selection.Clear(); world.Selection.Clear();
} }

View File

@@ -101,7 +101,7 @@ namespace OpenRA.Mods.Common.Orders
viewport = worldRenderer.Viewport; viewport = worldRenderer.Viewport;
gameSettings = Game.Settings.Game; gameSettings = Game.Settings.Game;
if (gameSettings.UseClassicMouseStyle) if (gameSettings.MouseControlStyle == MouseControlStyle.Classic)
world.Selection.Clear(); world.Selection.Clear();
var variants = new List<VariantWrapper>() var variants = new List<VariantWrapper>()

View File

@@ -53,6 +53,16 @@ namespace OpenRA.Mods.Common.Orders
} }
public virtual IEnumerable<Order> Order(World world, CPos cell, int2 worldPixel, MouseInput mi) public virtual IEnumerable<Order> Order(World world, CPos cell, int2 worldPixel, MouseInput mi)
{
if (mi.Button == ActionButton)
return OrderInner(world, cell, worldPixel, mi);
if (mi.Button == CancelButton)
world.CancelInputMode();
return [];
}
protected virtual IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
var target = TargetForInput(world, cell, worldPixel, mi); var target = TargetForInput(world, cell, worldPixel, mi);
var orders = world.Selection.Actors var orders = world.Selection.Actors
@@ -82,7 +92,7 @@ namespace OpenRA.Mods.Common.Orders
var target = TargetForInput(world, cell, worldPixel, mi); var target = TargetForInput(world, cell, worldPixel, mi);
bool useSelect; bool useSelect;
if (gameSettings.UseClassicMouseStyle && !InputOverridesSelection(world, worldPixel, mi)) if (gameSettings.MouseControlStyle == MouseControlStyle.Classic && !InputOverridesSelection(world, worldPixel, mi))
useSelect = target.Type == TargetType.Actor && target.Actor.Info.HasTraitInfo<ISelectableInfo>(); useSelect = target.Type == TargetType.Actor && target.Actor.Info.HasTraitInfo<ISelectableInfo>();
else else
{ {
@@ -149,9 +159,6 @@ namespace OpenRA.Mods.Common.Orders
/// </summary> /// </summary>
protected UnitOrderResult OrderForUnit(Actor self, Target target, CPos xy, MouseInput mi) protected UnitOrderResult OrderForUnit(Actor self, Target target, CPos xy, MouseInput mi)
{ {
if (mi.Button != ActionButton)
return null;
if (self.Owner != self.World.LocalPlayer) if (self.Owner != self.World.LocalPlayer)
return null; return null;

View File

@@ -115,14 +115,8 @@ namespace OpenRA.Mods.Common.Traits
.ToArray(); .ToArray();
} }
public override IEnumerable<Order> Order(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
if (mi.Button != ActionButton)
{
world.CancelInputMode();
yield break;
}
var queued = mi.Modifiers.HasModifier(Modifiers.Shift); var queued = mi.Modifiers.HasModifier(Modifiers.Shift);
if (!queued) if (!queued)
world.CancelInputMode(); world.CancelInputMode();

View File

@@ -218,9 +218,10 @@ namespace OpenRA.Mods.Common.Traits
return Info.TerrainTypes.Contains(terrainType); return Info.TerrainTypes.Contains(terrainType);
} }
sealed class MinefieldOrderGenerator : OrderGenerator sealed class MinefieldOrderGenerator : UnitOrderGenerator
{ {
protected override MouseActionType ActionType => MouseActionType.ConfirmOrder; protected override MouseActionType ActionType => MouseActionType.ConfirmOrder;
public override bool ClearSelectionOnLeftClick => false;
readonly List<Actor> minelayers; readonly List<Actor> minelayers;
readonly Minelayer minelayer; readonly Minelayer minelayer;
@@ -231,7 +232,7 @@ namespace OpenRA.Mods.Common.Traits
readonly string cursor; readonly string cursor;
public MinefieldOrderGenerator(Actor a, CPos xy, bool queued) public MinefieldOrderGenerator(Actor a, CPos xy, bool queued)
: base(a.World, false) : base(a.World)
{ {
minelayers = [a]; minelayers = [a];
minefieldStart = xy; minefieldStart = xy;
@@ -290,11 +291,12 @@ namespace OpenRA.Mods.Common.Traits
protected override IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi) protected override IEnumerable<Order> OrderInner(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
world.CancelInputMode(); world.CancelInputMode();
foreach (var minelayer in minelayers) foreach (var minelayer in minelayers)
yield return new Order("PlaceMinefield", minelayer, Target.FromCell(world, cell), queued) { ExtraLocation = minefieldStart }; yield return new Order("PlaceMinefield", minelayer, Target.FromCell(world, cell), queued) { ExtraLocation = minefieldStart };
} }
protected override void SelectionChanged(World world, IEnumerable<Actor> selected) public override void SelectionChanged(World world, IEnumerable<Actor> selected)
{ {
minelayers.Clear(); minelayers.Clear();
minelayers.AddRange(selected.Where(s => !s.IsDead && s.Info.HasTraitInfo<MinelayerInfo>())); minelayers.AddRange(selected.Where(s => !s.IsDead && s.Info.HasTraitInfo<MinelayerInfo>()));
@@ -302,8 +304,8 @@ namespace OpenRA.Mods.Common.Traits
world.CancelInputMode(); world.CancelInputMode();
} }
protected override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; } public override IEnumerable<IRenderable> Render(WorldRenderer wr, World world) { yield break; }
protected override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world) public override IEnumerable<IRenderable> RenderAboveShroud(WorldRenderer wr, World world)
{ {
var minelayer = minelayers.FirstOrDefault(m => m.IsInWorld && !m.IsDead); var minelayer = minelayers.FirstOrDefault(m => m.IsInWorld && !m.IsDead);
if (minelayer == null) if (minelayer == null)
@@ -347,9 +349,9 @@ namespace OpenRA.Mods.Common.Traits
} }
} }
protected override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; } public override IEnumerable<IRenderable> RenderAnnotations(WorldRenderer wr, World world) { yield break; }
protected override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) public override string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi)
{ {
return cursor; return cursor;
} }

View File

@@ -130,7 +130,6 @@ namespace OpenRA.Mods.Common.Traits
return; return;
// Play the selection voice from one of the selected actors // Play the selection voice from one of the selected actors
// TODO: This probably should only be considering the newly selected actors
foreach (var actor in actors) foreach (var actor in actors)
{ {
if (actor.Owner != world.LocalPlayer || !actor.IsInWorld) if (actor.Owner != world.LocalPlayer || !actor.IsInWorld)

View File

@@ -10,6 +10,7 @@
#endregion #endregion
using System; using System;
using System.Collections.Generic;
using OpenRA.Graphics; using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits; using OpenRA.Mods.Common.Traits;
using OpenRA.Primitives; using OpenRA.Primitives;
@@ -20,7 +21,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public class IntroductionPromptLogic : ChromeLogic public class IntroductionPromptLogic : ChromeLogic
{ {
// Increment the version number when adding new stats // Increment the version number when adding new stats
const int IntroductionVersion = 1; const int IntroductionVersion = 2;
[FluentReference] [FluentReference]
const string Classic = "options-control-scheme.classic"; const string Classic = "options-control-scheme.classic";
@@ -28,8 +29,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[FluentReference] [FluentReference]
const string Modern = "options-control-scheme.modern"; const string Modern = "options-control-scheme.modern";
readonly string classic; [FluentReference]
readonly string modern; const string OtherRTS = "options-control-scheme.otherrts";
public static bool ShouldShowPrompt() public static bool ShouldShowPrompt()
{ {
@@ -43,8 +44,23 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var graphicSettings = modData.GetSettings<GraphicSettings>(); var graphicSettings = modData.GetSettings<GraphicSettings>();
var gameSettings = modData.GetSettings<GameSettings>(); var gameSettings = modData.GetSettings<GameSettings>();
classic = FluentProvider.GetMessage(Classic); var controlTypes = new Dictionary<MouseControlStyle, string>
modern = FluentProvider.GetMessage(Modern); {
{ MouseControlStyle.Classic, FluentProvider.GetMessage(Classic) },
{ MouseControlStyle.Modern, FluentProvider.GetMessage(Modern) },
{ MouseControlStyle.OtherRTS, FluentProvider.GetMessage(OtherRTS) },
};
if (gameSettings.IntroductionPromptVersion < 2)
{
// UseClassicMouseStyle boolean was replaced by MouseControlStyle enum to support additional control styles
var classicMouseStyleNode = gameSettings.Yaml.NodeWithKeyOrDefault("UseClassicMouseStyle");
if (classicMouseStyleNode != null)
{
var useClassicMouseStyle = FieldLoader.GetValue<bool>("UseClassicMouseStyle", classicMouseStyleNode.Value.Value);
gameSettings.MouseControlStyle = useClassicMouseStyle ? MouseControlStyle.Classic : MouseControlStyle.Modern;
}
}
var escPressed = false; var escPressed = false;
var nameTextfield = widget.Get<TextFieldWidget>("PLAYERNAME"); var nameTextfield = widget.Get<TextFieldWidget>("PLAYERNAME");
@@ -82,22 +98,25 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}; };
var mouseControlDescClassic = widget.Get("MOUSE_CONTROL_DESC_CLASSIC"); var mouseControlDescClassic = widget.Get("MOUSE_CONTROL_DESC_CLASSIC");
mouseControlDescClassic.IsVisible = () => gameSettings.UseClassicMouseStyle; mouseControlDescClassic.IsVisible = () => gameSettings.MouseControlStyle == MouseControlStyle.Classic;
var mouseControlDescModern = widget.Get("MOUSE_CONTROL_DESC_MODERN"); var mouseControlDescModern = widget.Get("MOUSE_CONTROL_DESC_MODERN");
mouseControlDescModern.IsVisible = () => !gameSettings.UseClassicMouseStyle; mouseControlDescModern.IsVisible = () => gameSettings.MouseControlStyle == MouseControlStyle.Modern;
var mouseControlDescOtherRTS = widget.Get("MOUSE_CONTROL_DESC_OTHERRTS");
mouseControlDescOtherRTS.IsVisible = () => gameSettings.MouseControlStyle == MouseControlStyle.OtherRTS;
var mouseControlDropdown = widget.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN"); var mouseControlDropdown = widget.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN");
mouseControlDropdown.OnMouseDown = _ => InputSettingsLogic.ShowMouseControlDropdown(mouseControlDropdown, gameSettings); mouseControlDropdown.OnMouseDown = _ => InputSettingsLogic.ShowMouseControlDropdown(mouseControlDropdown, controlTypes, gameSettings);
mouseControlDropdown.GetText = () => gameSettings.UseClassicMouseStyle ? classic : modern; mouseControlDropdown.GetText = () => controlTypes[gameSettings.MouseControlStyle];
foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern }) foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern, mouseControlDescOtherRTS })
{ {
var classicScrollRight = container.Get("DESC_SCROLL_RIGHT"); var classicScrollRight = container.Get("DESC_SCROLL_RIGHT");
classicScrollRight.IsVisible = () => gameSettings.UseClassicMouseStyle ^ gameSettings.UseAlternateScrollButton; classicScrollRight.IsVisible = () => (gameSettings.MouseControlStyle == MouseControlStyle.Classic) ^ gameSettings.UseAlternateScrollButton;
var classicScrollMiddle = container.Get("DESC_SCROLL_MIDDLE"); var classicScrollMiddle = container.Get("DESC_SCROLL_MIDDLE");
classicScrollMiddle.IsVisible = () => !gameSettings.UseClassicMouseStyle ^ gameSettings.UseAlternateScrollButton; classicScrollMiddle.IsVisible = () => (gameSettings.MouseControlStyle != MouseControlStyle.Classic) ^ gameSettings.UseAlternateScrollButton;
var zoomDesc = container.Get("DESC_ZOOM"); var zoomDesc = container.Get("DESC_ZOOM");
zoomDesc.IsVisible = () => gameSettings.ZoomModifier == Modifiers.None; zoomDesc.IsVisible = () => gameSettings.ZoomModifier == Modifiers.None;

View File

@@ -24,6 +24,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[FluentReference] [FluentReference]
const string Modern = "options-control-scheme.modern"; const string Modern = "options-control-scheme.modern";
[FluentReference]
const string OtherRTS = "options-control-scheme.otherrts";
[FluentReference] [FluentReference]
const string Disabled = "options-mouse-scroll-type.disabled"; const string Disabled = "options-mouse-scroll-type.disabled";
@@ -36,15 +39,19 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[FluentReference] [FluentReference]
const string Joystick = "options-mouse-scroll-type.joystick"; const string Joystick = "options-mouse-scroll-type.joystick";
readonly string classic;
readonly string modern;
readonly GameSettings gameSettings; readonly GameSettings gameSettings;
readonly Dictionary<MouseControlStyle, string> controlTypes;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public InputSettingsLogic(ModData modData, SettingsLogic settingsLogic, string panelID, string label) public InputSettingsLogic(ModData modData, SettingsLogic settingsLogic, string panelID, string label)
{ {
classic = FluentProvider.GetMessage(Classic); controlTypes = new Dictionary<MouseControlStyle, string>
modern = FluentProvider.GetMessage(Modern); {
{ MouseControlStyle.Classic, FluentProvider.GetMessage(Classic) },
{ MouseControlStyle.Modern, FluentProvider.GetMessage(Modern) },
{ MouseControlStyle.OtherRTS, FluentProvider.GetMessage(OtherRTS) },
};
gameSettings = modData.GetSettings<GameSettings>(); gameSettings = modData.GetSettings<GameSettings>();
settingsLogic.RegisterSettingsPanel(panelID, label, InitPanel, ResetPanel); settingsLogic.RegisterSettingsPanel(panelID, label, InitPanel, ResetPanel);
@@ -62,8 +69,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
SettingsUtils.BindSliderPref(panel, "UI_SCROLLSPEED_SLIDER", gameSettings, "UIScrollSpeed"); SettingsUtils.BindSliderPref(panel, "UI_SCROLLSPEED_SLIDER", gameSettings, "UIScrollSpeed");
var mouseControlDropdown = panel.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN"); var mouseControlDropdown = panel.Get<DropDownButtonWidget>("MOUSE_CONTROL_DROPDOWN");
mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(mouseControlDropdown, gameSettings); mouseControlDropdown.OnMouseDown = _ => ShowMouseControlDropdown(mouseControlDropdown, controlTypes, gameSettings);
mouseControlDropdown.GetText = () => gameSettings.UseClassicMouseStyle ? classic : modern; mouseControlDropdown.GetText = () => controlTypes[gameSettings.MouseControlStyle];
var mouseScrollDropdown = panel.Get<DropDownButtonWidget>("MOUSE_SCROLL_TYPE_DROPDOWN"); var mouseScrollDropdown = panel.Get<DropDownButtonWidget>("MOUSE_SCROLL_TYPE_DROPDOWN");
mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gameSettings); mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gameSettings);
@@ -74,18 +81,21 @@ namespace OpenRA.Mods.Common.Widgets.Logic
#pragma warning restore IDE0200 #pragma warning restore IDE0200
var mouseControlDescClassic = panel.Get("MOUSE_CONTROL_DESC_CLASSIC"); var mouseControlDescClassic = panel.Get("MOUSE_CONTROL_DESC_CLASSIC");
mouseControlDescClassic.IsVisible = () => gameSettings.UseClassicMouseStyle; mouseControlDescClassic.IsVisible = () => gameSettings.MouseControlStyle == MouseControlStyle.Classic;
var mouseControlDescModern = panel.Get("MOUSE_CONTROL_DESC_MODERN"); var mouseControlDescModern = panel.Get("MOUSE_CONTROL_DESC_MODERN");
mouseControlDescModern.IsVisible = () => !gameSettings.UseClassicMouseStyle; mouseControlDescModern.IsVisible = () => gameSettings.MouseControlStyle == MouseControlStyle.Modern;
foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern }) var mouseControlDescOtherRTS = panel.Get("MOUSE_CONTROL_DESC_OTHERRTS");
mouseControlDescOtherRTS.IsVisible = () => gameSettings.MouseControlStyle == MouseControlStyle.OtherRTS;
foreach (var container in new[] { mouseControlDescClassic, mouseControlDescModern, mouseControlDescOtherRTS })
{ {
var classicScrollRight = container.Get("DESC_SCROLL_RIGHT"); var classicScrollRight = container.Get("DESC_SCROLL_RIGHT");
classicScrollRight.IsVisible = () => gameSettings.UseClassicMouseStyle ^ gameSettings.UseAlternateScrollButton; classicScrollRight.IsVisible = () => (gameSettings.MouseControlStyle == MouseControlStyle.Classic) ^ gameSettings.UseAlternateScrollButton;
var classicScrollMiddle = container.Get("DESC_SCROLL_MIDDLE"); var classicScrollMiddle = container.Get("DESC_SCROLL_MIDDLE");
classicScrollMiddle.IsVisible = () => !gameSettings.UseClassicMouseStyle ^ gameSettings.UseAlternateScrollButton; classicScrollMiddle.IsVisible = () => (gameSettings.MouseControlStyle != MouseControlStyle.Classic) ^ gameSettings.UseAlternateScrollButton;
var zoomDesc = container.Get("DESC_ZOOM"); var zoomDesc = container.Get("DESC_ZOOM");
zoomDesc.IsVisible = () => gameSettings.ZoomModifier == Modifiers.None; zoomDesc.IsVisible = () => gameSettings.ZoomModifier == Modifiers.None;
@@ -133,7 +143,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return () => return () =>
{ {
gameSettings.UseClassicMouseStyle = defaultGameSettings.UseClassicMouseStyle; gameSettings.MouseControlStyle = defaultGameSettings.MouseControlStyle;
gameSettings.MouseScroll = defaultGameSettings.MouseScroll; gameSettings.MouseScroll = defaultGameSettings.MouseScroll;
gameSettings.UseAlternateScrollButton = defaultGameSettings.UseAlternateScrollButton; gameSettings.UseAlternateScrollButton = defaultGameSettings.UseAlternateScrollButton;
gameSettings.LockMouseWindow = defaultGameSettings.LockMouseWindow; gameSettings.LockMouseWindow = defaultGameSettings.LockMouseWindow;
@@ -150,24 +160,20 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}; };
} }
public static void ShowMouseControlDropdown(DropDownButtonWidget dropdown, GameSettings gameSettings) public static void ShowMouseControlDropdown(DropDownButtonWidget dropdown, Dictionary<MouseControlStyle, string> controlTypes, GameSettings gameSettings)
{ {
var options = new Dictionary<string, bool>() ScrollItemWidget SetupItem(MouseControlStyle o, ScrollItemWidget itemTemplate)
{
{ FluentProvider.GetMessage(Classic), true },
{ FluentProvider.GetMessage(Modern), false },
};
ScrollItemWidget SetupItem(string o, ScrollItemWidget itemTemplate)
{ {
var item = ScrollItemWidget.Setup(itemTemplate, var item = ScrollItemWidget.Setup(itemTemplate,
() => gameSettings.UseClassicMouseStyle == options[o], () => gameSettings.MouseControlStyle == o,
() => gameSettings.UseClassicMouseStyle = options[o]); () => gameSettings.MouseControlStyle = o);
item.Get<LabelWidget>("LABEL").GetText = () => o;
var label = controlTypes[o];
item.Get<LabelWidget>("LABEL").GetText = () => label;
return item; return item;
} }
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, SetupItem); dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, controlTypes.Keys, SetupItem);
} }
static void ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings gameSettings) static void ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings gameSettings)

View File

@@ -45,6 +45,7 @@ namespace OpenRA.Mods.Common.Widgets
readonly int cellWidth; readonly int cellWidth;
readonly int previewWidth; readonly int previewWidth;
readonly int previewHeight; readonly int previewHeight;
readonly string worldSelectCursor = ChromeMetrics.Get<string>("WorldSelectCursor");
readonly string worldDefaultCursor = ChromeMetrics.Get<string>("WorldDefaultCursor"); readonly string worldDefaultCursor = ChromeMetrics.Get<string>("WorldDefaultCursor");
readonly GameSettings gameSettings; readonly GameSettings gameSettings;
@@ -52,6 +53,8 @@ namespace OpenRA.Mods.Common.Widgets
int frame; int frame;
bool hasRadar; bool hasRadar;
bool cachedEnabled; bool cachedEnabled;
bool isMinimapMoving;
MouseButton minimapMoveButton;
float previewScale = 0; float previewScale = 0;
int2 previewOrigin = int2.Zero; int2 previewOrigin = int2.Zero;
@@ -303,6 +306,7 @@ namespace OpenRA.Mods.Common.Widgets
}; };
var cursor = world.OrderGenerator.GetCursor(world, cell, worldPixel, mi); var cursor = world.OrderGenerator.GetCursor(world, cell, worldPixel, mi);
if (cursor == null) if (cursor == null)
return worldDefaultCursor; return worldDefaultCursor;
@@ -318,13 +322,14 @@ namespace OpenRA.Mods.Common.Widgets
return true; return true;
var worldCoords = MinimapPixelToWorldCoords(mi.Location); var worldCoords = MinimapPixelToWorldCoords(mi.Location);
if ((mi.Event == MouseInputEvent.Down || mi.Event == MouseInputEvent.Move) if ((mi.Event == MouseInputEvent.Down && mi.Button != world.OrderGenerator.ActionButton) ||
&& mi.Button == gameSettings.ResolveCancelButton(MouseActionType.Contextual)) (mi.Event == MouseInputEvent.Move && isMinimapMoving && mi.Button == minimapMoveButton))
{ {
worldRenderer.Viewport.Center(worldCoords); worldRenderer.Viewport.Center(worldCoords);
isMinimapMoving = true;
minimapMoveButton = mi.Button;
} }
else if (mi.Event == MouseInputEvent.Down && WorldInteractionController != null)
if (mi.Event == MouseInputEvent.Down && mi.Button == gameSettings.ResolveActionButton(MouseActionType.Contextual) && WorldInteractionController != null)
{ {
var worldPos = worldCoords.ToInt2(); var worldPos = worldCoords.ToInt2();
var wpos = new WPos(worldPos.X, worldPos.Y, 0); var wpos = new WPos(worldPos.X, worldPos.Y, 0);
@@ -344,6 +349,11 @@ namespace OpenRA.Mods.Common.Widgets
fakemi.Event = MouseInputEvent.Up; fakemi.Event = MouseInputEvent.Up;
controller.HandleMouseInput(fakemi); controller.HandleMouseInput(fakemi);
} }
else if (mi.Event == MouseInputEvent.Up && mi.Button == minimapMoveButton)
{
isMinimapMoving = false;
minimapMoveButton = MouseButton.None;
}
return true; return true;
} }

View File

@@ -319,7 +319,7 @@ namespace OpenRA.Mods.Common.Widgets
} }
var gs = Game.Settings.Game; var gs = Game.Settings.Game;
var scrollButton = gs.UseClassicMouseStyle ^ gs.UseAlternateScrollButton ? MouseButton.Right : MouseButton.Middle; var scrollButton = gs.MouseControlStyle == MouseControlStyle.Classic ^ gs.UseAlternateScrollButton ? MouseButton.Right : MouseButton.Middle;
var scrollType = mi.Button.HasFlag(scrollButton) ? gs.MouseScroll : MouseScrollType.Disabled; var scrollType = mi.Button.HasFlag(scrollButton) ? gs.MouseScroll : MouseScrollType.Disabled;
if (scrollType == MouseScrollType.Disabled) if (scrollType == MouseScrollType.Disabled)

View File

@@ -86,7 +86,9 @@ namespace OpenRA.Mods.Common.Widgets
{ {
mousePos = worldRenderer.Viewport.ViewToWorldPx(mi.Location); mousePos = worldRenderer.Viewport.ViewToWorldPx(mi.Location);
var useClassicMouseStyle = gameSettings.UseClassicMouseStyle; var useClassicMouseStyle = gameSettings.MouseControlStyle == MouseControlStyle.Classic;
var actionButton = World.OrderGenerator.ActionButton;
var multiClick = mi.MultiTapCount >= 2; var multiClick = mi.MultiTapCount >= 2;
if (World.OrderGenerator is not UnitOrderGenerator uog) if (World.OrderGenerator is not UnitOrderGenerator uog)
@@ -102,15 +104,18 @@ namespace OpenRA.Mods.Common.Widgets
if (!TakeMouseFocus(mi)) if (!TakeMouseFocus(mi))
return false; return false;
dragStart = mousePos; if (useClassicMouseStyle || actionButton != MouseButton.Left)
isDragging = true; {
dragStart = mousePos;
isDragging = true;
}
} }
if (mi.Button == MouseButton.Left && mi.Event == MouseInputEvent.Up) if (mi.Button == MouseButton.Left && mi.Event == MouseInputEvent.Up)
{ {
if (useClassicMouseStyle && HasMouseFocus && if (((useClassicMouseStyle && !multiClick) || (!useClassicMouseStyle && actionButton == MouseButton.Left))
!IsValidDragbox && World.Selection.Actors.Count != 0 && && HasMouseFocus && !IsValidDragbox && World.Selection.Actors.Count != 0
!multiClick && uog.InputOverridesSelection(World, mousePos, mi)) && uog.InputOverridesSelection(World, mousePos, mi))
{ {
// Order units instead of selecting // Order units instead of selecting
ApplyOrders(World, mi); ApplyOrders(World, mi);
@@ -167,7 +172,7 @@ namespace OpenRA.Mods.Common.Widgets
// Don't do anything while selecting // Don't do anything while selecting
if (!IsValidDragbox) if (!IsValidDragbox)
{ {
if (useClassicMouseStyle) if (useClassicMouseStyle && uog.ClearSelectionOnLeftClick)
World.Selection.Clear(); World.Selection.Clear();
ApplyOrders(World, mi); ApplyOrders(World, mi);

View File

@@ -3,7 +3,7 @@ Container@MAINMENU_INTRODUCTION_PROMPT:
X: (WINDOW_WIDTH - WIDTH) / 2 X: (WINDOW_WIDTH - WIDTH) / 2
Y: (WINDOW_HEIGHT - HEIGHT) / 2 Y: (WINDOW_HEIGHT - HEIGHT) / 2
Width: 700 Width: 700
Height: 445 Height: 461
Children: Children:
Label@PROMPT_TITLE: Label@PROMPT_TITLE:
Width: PARENT_WIDTH Width: PARENT_WIDTH
@@ -140,49 +140,119 @@ Container@MAINMENU_INTRODUCTION_PROMPT:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-commands Text: label-mouse-control-desc-classic-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-classic-buildings Text: label-mouse-control-desc-classic-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-support Text: label-mouse-control-desc-classic-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom Text: label-mouse-control-desc-classic-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom-modifier Text: label-mouse-control-desc-classic-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-right Text: label-mouse-control-desc-classic-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-middle Text: label-mouse-control-desc-classic-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-edgescroll Text: label-mouse-control-desc-classic-edgescroll
Container@MOUSE_CONTROL_DESC_OTHERRTS:
X: PARENT_WIDTH / 2 + 10
Width: PARENT_WIDTH / 2 - 20
Children:
LabelWithHighlight@DESC_SELECTION:
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-selection
LabelWithHighlight@DESC_COMMANDS:
Y: 17
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-commands
LabelWithHighlight@DESC_ORDERS:
Y: 34
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-buildings
LabelWithHighlight@DESC_SUPPORT:
Y: 68
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-support
LabelWithHighlight@DESC_ZOOM:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-middle
Label@DESC_EDGESCROLL:
X: 9
Y: 118
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-edgescroll
Container@MOUSE_CONTROL_DESC_MODERN: Container@MOUSE_CONTROL_DESC_MODERN:
X: PARENT_WIDTH / 2 + 10 X: PARENT_WIDTH / 2 + 10
Width: PARENT_WIDTH / 2 - 20 Width: PARENT_WIDTH / 2 - 20
@@ -198,45 +268,51 @@ Container@MAINMENU_INTRODUCTION_PROMPT:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-commands Text: label-mouse-control-desc-modern-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-modern-buildings Text: label-mouse-control-desc-modern-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-support Text: label-mouse-control-desc-modern-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom Text: label-mouse-control-desc-modern-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom-modifier Text: label-mouse-control-desc-modern-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-right Text: label-mouse-control-desc-modern-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-middle Text: label-mouse-control-desc-modern-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
@@ -255,7 +331,7 @@ Container@MAINMENU_INTRODUCTION_PROMPT:
Font: Regular Font: Regular
Text: checkbox-edgescroll-container Text: checkbox-edgescroll-container
Container@SPACER: Container@SPACER:
Height: 30 Height: 46
Background@DISPLAY_SECTION_HEADER: Background@DISPLAY_SECTION_HEADER:
X: 5 X: 5
Width: PARENT_WIDTH - 10 Width: PARENT_WIDTH - 10

View File

@@ -71,49 +71,120 @@ Container@INPUT_PANEL:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-commands Text: label-mouse-control-desc-classic-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-classic-buildings Text: label-mouse-control-desc-classic-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-support Text: label-mouse-control-desc-classic-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom Text: label-mouse-control-desc-classic-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom-modifier Text: label-mouse-control-desc-classic-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-right Text: label-mouse-control-desc-classic-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-middle Text: label-mouse-control-desc-classic-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-edgescroll Text: label-mouse-control-desc-classic-edgescroll
Container@MOUSE_CONTROL_DESC_OTHERRTS:
X: 10
Y: 55
Width: PARENT_WIDTH / 2 - 20
Children:
LabelWithHighlight@DESC_SELECTION:
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-selection
LabelWithHighlight@DESC_COMMANDS:
Y: 17
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-commands
LabelWithHighlight@DESC_ORDERS:
Y: 34
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-buildings
LabelWithHighlight@DESC_SUPPORT:
Y: 68
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-support
LabelWithHighlight@DESC_ZOOM:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-middle
Label@DESC_EDGESCROLL:
X: 9
Y: 118
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-edgescroll
Container@MOUSE_CONTROL_DESC_MODERN: Container@MOUSE_CONTROL_DESC_MODERN:
X: 10 X: 10
Y: 55 Y: 55
@@ -130,45 +201,51 @@ Container@INPUT_PANEL:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-commands Text: label-mouse-control-desc-modern-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-modern-buildings Text: label-mouse-control-desc-modern-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-support Text: label-mouse-control-desc-modern-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom Text: label-mouse-control-desc-modern-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom-modifier Text: label-mouse-control-desc-modern-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-right Text: label-mouse-control-desc-modern-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-middle Text: label-mouse-control-desc-modern-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
@@ -213,10 +290,10 @@ Container@INPUT_PANEL:
Font: Regular Font: Regular
Text: checkbox-lockmouse-container Text: checkbox-lockmouse-container
Container@SPACER: Container@SPACER:
Height: 30 Height: 46
Container@ROW: Container@ROW:
Width: PARENT_WIDTH - 24 Width: PARENT_WIDTH - 24
Height: 50 Height: 45
Children: Children:
Container@MOUSE_SCROLL_TYPE_CONTAINER: Container@MOUSE_SCROLL_TYPE_CONTAINER:
X: 10 X: 10
@@ -241,7 +318,7 @@ Container@INPUT_PANEL:
Height: 20 Height: 20
Text: label-scrollspeed-slider-container-scroll-speed Text: label-scrollspeed-slider-container-scroll-speed
Slider@SCROLLSPEED_SLIDER: Slider@SCROLLSPEED_SLIDER:
Y: 25 Y: 20
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 20 Height: 20
Ticks: 7 Ticks: 7
@@ -249,7 +326,7 @@ Container@INPUT_PANEL:
MaximumValue: 50 MaximumValue: 50
Container@ROW: Container@ROW:
Width: PARENT_WIDTH - 24 Width: PARENT_WIDTH - 24
Height: 50 Height: 45
Children: Children:
Container@ZOOMSPEED_SLIDER_CONTAINER: Container@ZOOMSPEED_SLIDER_CONTAINER:
X: PARENT_WIDTH / 2 + 10 X: PARENT_WIDTH / 2 + 10
@@ -260,7 +337,7 @@ Container@INPUT_PANEL:
Height: 20 Height: 20
Text: label-zoomspeed-slider-container-zoom-speed Text: label-zoomspeed-slider-container-zoom-speed
ExponentialSlider@ZOOMSPEED_SLIDER: ExponentialSlider@ZOOMSPEED_SLIDER:
Y: 25 Y: 20
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 20 Height: 20
Ticks: 7 Ticks: 7
@@ -268,7 +345,7 @@ Container@INPUT_PANEL:
MaximumValue: 0.4 MaximumValue: 0.4
Container@ROW: Container@ROW:
Width: PARENT_WIDTH - 24 Width: PARENT_WIDTH - 24
Height: 50 Height: 45
Children: Children:
Container@UI_SCROLLSPEED_SLIDER_CONTAINER: Container@UI_SCROLLSPEED_SLIDER_CONTAINER:
X: PARENT_WIDTH / 2 + 10 X: PARENT_WIDTH / 2 + 10
@@ -279,7 +356,7 @@ Container@INPUT_PANEL:
Height: 20 Height: 20
Text: label-ui-scrollspeed-slider-container-scroll-speed Text: label-ui-scrollspeed-slider-container-scroll-speed
Slider@UI_SCROLLSPEED_SLIDER: Slider@UI_SCROLLSPEED_SLIDER:
Y: 25 Y: 20
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 20 Height: 20
Ticks: 7 Ticks: 7

View File

@@ -480,6 +480,7 @@ label-input-section-header = Input
label-mouse-control-container = Control Scheme: label-mouse-control-container = Control Scheme:
label-mouse-control-desc-classic-selection = - Select units using the <Left> mouse button label-mouse-control-desc-classic-selection = - Select units using the <Left> mouse button
label-mouse-control-desc-classic-commands = - Command units using the <Left> mouse button label-mouse-control-desc-classic-commands = - Command units using the <Left> mouse button
label-mouse-control-desc-classic-orders = - Confirm orders using the <Left> mouse button
label-mouse-control-desc-classic-buildings = - Place structures using the <Left> mouse button label-mouse-control-desc-classic-buildings = - Place structures using the <Left> mouse button
label-mouse-control-desc-classic-support = - Target support powers using the <Left> mouse button label-mouse-control-desc-classic-support = - Target support powers using the <Left> mouse button
label-mouse-control-desc-classic-zoom = - Zoom the battlefield using the <Scroll Wheel> label-mouse-control-desc-classic-zoom = - Zoom the battlefield using the <Scroll Wheel>
@@ -487,8 +488,19 @@ label-mouse-control-desc-classic-zoom-modifier = - Zoom the battlefield using <M
label-mouse-control-desc-classic-scroll-right = - Pan the battlefield using the <Right> mouse button label-mouse-control-desc-classic-scroll-right = - Pan the battlefield using the <Right> mouse button
label-mouse-control-desc-classic-scroll-middle = - Pan the battlefield using the <Middle> mouse button label-mouse-control-desc-classic-scroll-middle = - Pan the battlefield using the <Middle> mouse button
label-mouse-control-desc-classic-edgescroll = or by moving the cursor to the edge of the screen label-mouse-control-desc-classic-edgescroll = or by moving the cursor to the edge of the screen
label-mouse-control-desc-otherrts-selection = - Select units using the <Left> mouse button
label-mouse-control-desc-otherrts-commands = - Command units using the <Right> mouse button
label-mouse-control-desc-otherrts-orders = - Confirm orders using the <Left> mouse button
label-mouse-control-desc-otherrts-buildings = - Place structures using the <Left> mouse button
label-mouse-control-desc-otherrts-support = - Target support powers using the <Left> mouse button
label-mouse-control-desc-otherrts-zoom = - Zoom the battlefield using the <Scroll Wheel>
label-mouse-control-desc-otherrts-zoom-modifier = - Zoom the battlefield using <MODIFIER + Scroll Wheel>
label-mouse-control-desc-otherrts-scroll-right = - Pan the battlefield using the <Right> mouse button
label-mouse-control-desc-otherrts-scroll-middle = - Pan the battlefield using the <Middle> mouse button
label-mouse-control-desc-otherrts-edgescroll = or by moving the cursor to the edge of the screen
label-mouse-control-desc-modern-selection = - Select units using the <Left> mouse button label-mouse-control-desc-modern-selection = - Select units using the <Left> mouse button
label-mouse-control-desc-modern-commands = - Command units using the <Right> mouse button label-mouse-control-desc-modern-commands = - Command units using the <Right> mouse button
label-mouse-control-desc-modern-orders = - Confirm orders using the <Right> mouse button
label-mouse-control-desc-modern-buildings = - Place structures using the <Left> mouse button label-mouse-control-desc-modern-buildings = - Place structures using the <Left> mouse button
label-mouse-control-desc-modern-support = - Target support powers using the <Left> mouse button label-mouse-control-desc-modern-support = - Target support powers using the <Left> mouse button
label-mouse-control-desc-modern-zoom = - Zoom the battlefield using the <Scroll Wheel> label-mouse-control-desc-modern-zoom = - Zoom the battlefield using the <Scroll Wheel>

View File

@@ -3,7 +3,7 @@ Background@MAINMENU_INTRODUCTION_PROMPT:
X: (WINDOW_WIDTH - WIDTH) / 2 X: (WINDOW_WIDTH - WIDTH) / 2
Y: (WINDOW_HEIGHT - HEIGHT) / 2 Y: (WINDOW_HEIGHT - HEIGHT) / 2
Width: 700 Width: 700
Height: 525 Height: 541
Children: Children:
Label@PROMPT_TITLE: Label@PROMPT_TITLE:
Width: PARENT_WIDTH Width: PARENT_WIDTH
@@ -134,49 +134,119 @@ Background@MAINMENU_INTRODUCTION_PROMPT:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-commands Text: label-mouse-control-desc-classic-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-classic-buildings Text: label-mouse-control-desc-classic-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-support Text: label-mouse-control-desc-classic-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom Text: label-mouse-control-desc-classic-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom-modifier Text: label-mouse-control-desc-classic-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-right Text: label-mouse-control-desc-classic-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-middle Text: label-mouse-control-desc-classic-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-edgescroll Text: label-mouse-control-desc-classic-edgescroll
Container@MOUSE_CONTROL_DESC_OTHERRTS:
X: PARENT_WIDTH / 2 + 10
Width: PARENT_WIDTH / 2 - 20
Children:
LabelWithHighlight@DESC_SELECTION:
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-selection
LabelWithHighlight@DESC_COMMANDS:
Y: 17
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-commands
LabelWithHighlight@DESC_ORDERS:
Y: 34
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-buildings
LabelWithHighlight@DESC_SUPPORT:
Y: 68
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-support
LabelWithHighlight@DESC_ZOOM:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-middle
Label@DESC_EDGESCROLL:
X: 9
Y: 118
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-edgescroll
Container@MOUSE_CONTROL_DESC_MODERN: Container@MOUSE_CONTROL_DESC_MODERN:
X: PARENT_WIDTH / 2 + 10 X: PARENT_WIDTH / 2 + 10
Width: PARENT_WIDTH / 2 - 20 Width: PARENT_WIDTH / 2 - 20
@@ -192,45 +262,51 @@ Background@MAINMENU_INTRODUCTION_PROMPT:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-commands Text: label-mouse-control-desc-modern-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-modern-buildings Text: label-mouse-control-desc-modern-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-support Text: label-mouse-control-desc-modern-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom Text: label-mouse-control-desc-modern-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom-modifier Text: label-mouse-control-desc-modern-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-right Text: label-mouse-control-desc-modern-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-middle Text: label-mouse-control-desc-modern-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
@@ -249,7 +325,7 @@ Background@MAINMENU_INTRODUCTION_PROMPT:
Font: Regular Font: Regular
Text: checkbox-edgescroll-container Text: checkbox-edgescroll-container
Container@SPACER: Container@SPACER:
Height: 30 Height: 46
Background@DISPLAY_SECTION_HEADER: Background@DISPLAY_SECTION_HEADER:
X: 5 X: 5
Width: PARENT_WIDTH - 10 Width: PARENT_WIDTH - 10

View File

@@ -71,49 +71,120 @@ Container@INPUT_PANEL:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-commands Text: label-mouse-control-desc-classic-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-classic-buildings Text: label-mouse-control-desc-classic-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-support Text: label-mouse-control-desc-classic-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom Text: label-mouse-control-desc-classic-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-zoom-modifier Text: label-mouse-control-desc-classic-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-right Text: label-mouse-control-desc-classic-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-scroll-middle Text: label-mouse-control-desc-classic-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-classic-edgescroll Text: label-mouse-control-desc-classic-edgescroll
Container@MOUSE_CONTROL_DESC_OTHERRTS:
X: 10
Y: 55
Width: PARENT_WIDTH / 2 - 20
Children:
LabelWithHighlight@DESC_SELECTION:
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-selection
LabelWithHighlight@DESC_COMMANDS:
Y: 17
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-commands
LabelWithHighlight@DESC_ORDERS:
Y: 34
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-buildings
LabelWithHighlight@DESC_SUPPORT:
Y: 68
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-support
LabelWithHighlight@DESC_ZOOM:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 85
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 102
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-scroll-middle
Label@DESC_EDGESCROLL:
X: 9
Y: 118
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-otherrts-edgescroll
Container@MOUSE_CONTROL_DESC_MODERN: Container@MOUSE_CONTROL_DESC_MODERN:
X: 10 X: 10
Y: 55 Y: 55
@@ -130,45 +201,51 @@ Container@INPUT_PANEL:
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-commands Text: label-mouse-control-desc-modern-commands
LabelWithHighlight@DESC_BUILDINGS: LabelWithHighlight@DESC_ORDERS:
Y: 34 Y: 34
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-orders
LabelWithHighlight@DESC_BUILDINGS:
Y: 51
Width: PARENT_WIDTH
Height: 16
Font: Small
Text: label-mouse-control-desc-modern-buildings Text: label-mouse-control-desc-modern-buildings
LabelWithHighlight@DESC_SUPPORT: LabelWithHighlight@DESC_SUPPORT:
Y: 51 Y: 68
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-support Text: label-mouse-control-desc-modern-support
LabelWithHighlight@DESC_ZOOM: LabelWithHighlight@DESC_ZOOM:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom Text: label-mouse-control-desc-modern-zoom
LabelWithHighlight@DESC_ZOOM_MODIFIER: LabelWithHighlight@DESC_ZOOM_MODIFIER:
Y: 68 Y: 85
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-zoom-modifier Text: label-mouse-control-desc-modern-zoom-modifier
LabelWithHighlight@DESC_SCROLL_RIGHT: LabelWithHighlight@DESC_SCROLL_RIGHT:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-right Text: label-mouse-control-desc-modern-scroll-right
LabelWithHighlight@DESC_SCROLL_MIDDLE: LabelWithHighlight@DESC_SCROLL_MIDDLE:
Y: 85 Y: 102
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
Text: label-mouse-control-desc-modern-scroll-middle Text: label-mouse-control-desc-modern-scroll-middle
Label@DESC_EDGESCROLL: Label@DESC_EDGESCROLL:
X: 9 X: 9
Y: 102 Y: 118
Width: PARENT_WIDTH Width: PARENT_WIDTH
Height: 16 Height: 16
Font: Small Font: Small
@@ -213,7 +290,7 @@ Container@INPUT_PANEL:
Font: Regular Font: Regular
Text: checkbox-lockmouse-container Text: checkbox-lockmouse-container
Container@SPACER: Container@SPACER:
Height: 30 Height: 46
Container@ROW: Container@ROW:
Width: PARENT_WIDTH - 24 Width: PARENT_WIDTH - 24
Height: 50 Height: 50

View File

@@ -300,6 +300,7 @@ label-input-section-header = Input
label-mouse-control-container = Control Scheme: label-mouse-control-container = Control Scheme:
label-mouse-control-desc-classic-selection = - Select units using the <Left> mouse button label-mouse-control-desc-classic-selection = - Select units using the <Left> mouse button
label-mouse-control-desc-classic-commands = - Command units using the <Left> mouse button label-mouse-control-desc-classic-commands = - Command units using the <Left> mouse button
label-mouse-control-desc-classic-orders = - Confirm orders using the <Left> mouse button
label-mouse-control-desc-classic-buildings = - Place structures using the <Left> mouse button label-mouse-control-desc-classic-buildings = - Place structures using the <Left> mouse button
label-mouse-control-desc-classic-support = - Target support powers using the <Left> mouse button label-mouse-control-desc-classic-support = - Target support powers using the <Left> mouse button
label-mouse-control-desc-classic-zoom = - Zoom the battlefield using the <Scroll Wheel> label-mouse-control-desc-classic-zoom = - Zoom the battlefield using the <Scroll Wheel>
@@ -307,8 +308,19 @@ label-mouse-control-desc-classic-zoom-modifier = - Zoom the battlefield using <M
label-mouse-control-desc-classic-scroll-right = - Pan the battlefield using the <Right> mouse button label-mouse-control-desc-classic-scroll-right = - Pan the battlefield using the <Right> mouse button
label-mouse-control-desc-classic-scroll-middle = - Pan the battlefield using the <Middle> mouse button label-mouse-control-desc-classic-scroll-middle = - Pan the battlefield using the <Middle> mouse button
label-mouse-control-desc-classic-edgescroll = or by moving the cursor to the edge of the screen label-mouse-control-desc-classic-edgescroll = or by moving the cursor to the edge of the screen
label-mouse-control-desc-otherrts-selection = - Select units using the <Left> mouse button
label-mouse-control-desc-otherrts-commands = - Command units using the <Right> mouse button
label-mouse-control-desc-otherrts-orders = - Confirm orders using the <Left> mouse button
label-mouse-control-desc-otherrts-buildings = - Place structures using the <Left> mouse button
label-mouse-control-desc-otherrts-support = - Target support powers using the <Left> mouse button
label-mouse-control-desc-otherrts-zoom = - Zoom the battlefield using the <Scroll Wheel>
label-mouse-control-desc-otherrts-zoom-modifier = - Zoom the battlefield using <MODIFIER + Scroll Wheel>
label-mouse-control-desc-otherrts-scroll-right = - Pan the battlefield using the <Right> mouse button
label-mouse-control-desc-otherrts-scroll-middle = - Pan the battlefield using the <Middle> mouse button
label-mouse-control-desc-otherrts-edgescroll = or by moving the cursor to the edge of the screen
label-mouse-control-desc-modern-selection = - Select units using the <Left> mouse button label-mouse-control-desc-modern-selection = - Select units using the <Left> mouse button
label-mouse-control-desc-modern-commands = - Command units using the <Right> mouse button label-mouse-control-desc-modern-commands = - Command units using the <Right> mouse button
label-mouse-control-desc-modern-orders = - Confirm orders using the <Right> mouse button
label-mouse-control-desc-modern-buildings = - Place structures using the <Left> mouse button label-mouse-control-desc-modern-buildings = - Place structures using the <Left> mouse button
label-mouse-control-desc-modern-support = - Target support powers using the <Left> mouse button label-mouse-control-desc-modern-support = - Target support powers using the <Left> mouse button
label-mouse-control-desc-modern-zoom = - Zoom the battlefield using the <Scroll Wheel> label-mouse-control-desc-modern-zoom = - Zoom the battlefield using the <Scroll Wheel>

View File

@@ -401,6 +401,7 @@ options-mouse-scroll-type =
options-control-scheme = options-control-scheme =
.classic = Classic .classic = Classic
.modern = Modern .modern = Modern
.otherrts = Other RTS
## SettingsLogic ## SettingsLogic
dialog-settings-save = dialog-settings-save =