Force selection cursor when selection overrides input.

This commit is contained in:
Paul Chote
2019-10-28 23:56:00 +00:00
committed by abcdefg30
parent 9d4f683d80
commit 3d6621f7ff

View File

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