diff --git a/OpenRA.Game/Orders/UnitOrderGenerator.cs b/OpenRA.Game/Orders/UnitOrderGenerator.cs index 3a6a87c16f..f8a37033a7 100644 --- a/OpenRA.Game/Orders/UnitOrderGenerator.cs +++ b/OpenRA.Game/Orders/UnitOrderGenerator.cs @@ -68,21 +68,27 @@ namespace OpenRA.Orders public virtual string GetCursor(World world, CPos cell, int2 worldPixel, MouseInput mi) { - var useSelect = false; var target = TargetForInput(world, cell, worldPixel, mi); var actorsAt = world.ActorMap.GetActorsAt(cell).ToList(); - if (target.Type == TargetType.Actor && target.Actor.Info.HasTraitInfo() && - (mi.Modifiers.HasModifier(Modifiers.Shift) || !world.Selection.Actors.Any())) - useSelect = true; + bool useSelect; + if (Game.Settings.Game.UseClassicMouseStyle && !InputOverridesSelection(world, worldPixel, mi)) + useSelect = target.Type == TargetType.Actor && target.Actor.Info.HasTraitInfo(); + else + { + var ordersWithCursor = world.Selection.Actors + .Select(a => OrderForUnit(a, target, actorsAt, cell, mi)) + .Where(o => o != null && o.Cursor != null); - var ordersWithCursor = world.Selection.Actors - .Select(a => OrderForUnit(a, target, actorsAt, cell, mi)) - .Where(o => o != null && o.Cursor != null); + var cursorOrder = ordersWithCursor.MaxByOrDefault(o => o.Order.OrderPriority); + if (cursorOrder != null) + return cursorOrder.Cursor; - var cursorOrder = ordersWithCursor.MaxByOrDefault(o => o.Order.OrderPriority); + useSelect = target.Type == TargetType.Actor && target.Actor.Info.HasTraitInfo() && + (mi.Modifiers.HasModifier(Modifiers.Shift) || !world.Selection.Actors.Any()); + } - return cursorOrder != null ? cursorOrder.Cursor : (useSelect ? "select" : "default"); + return useSelect ? "select" : "default"; } public void Deactivate() { }