Fix InputOverridesSelection only considering the closest actor.
This commit is contained in:
@@ -102,22 +102,19 @@ namespace OpenRA.Orders
|
|||||||
var target = Target.FromActor(actor);
|
var target = Target.FromActor(actor);
|
||||||
var cell = world.Map.CellContaining(target.CenterPosition);
|
var cell = world.Map.CellContaining(target.CenterPosition);
|
||||||
var actorsAt = world.ActorMap.GetActorsAt(cell).ToList();
|
var actorsAt = world.ActorMap.GetActorsAt(cell).ToList();
|
||||||
var underCursor = world.Selection.Actors
|
|
||||||
.Select(a => new ActorBoundsPair(a, a.MouseBounds(wr)))
|
|
||||||
.WithHighestSelectionPriority(xy, mi.Modifiers);
|
|
||||||
|
|
||||||
var o = OrderForUnit(underCursor, target, actorsAt, cell, mi);
|
var modifiers = TargetModifiers.None;
|
||||||
if (o != null)
|
if (mi.Modifiers.HasModifier(Modifiers.Ctrl))
|
||||||
|
modifiers |= TargetModifiers.ForceAttack;
|
||||||
|
if (mi.Modifiers.HasModifier(Modifiers.Shift))
|
||||||
|
modifiers |= TargetModifiers.ForceQueue;
|
||||||
|
if (mi.Modifiers.HasModifier(Modifiers.Alt))
|
||||||
|
modifiers |= TargetModifiers.ForceMove;
|
||||||
|
|
||||||
|
foreach (var a in world.Selection.Actors)
|
||||||
{
|
{
|
||||||
var modifiers = TargetModifiers.None;
|
var o = OrderForUnit(a, target, actorsAt, cell, mi);
|
||||||
if (mi.Modifiers.HasModifier(Modifiers.Ctrl))
|
if (o != null && o.Order.TargetOverridesSelection(modifiers))
|
||||||
modifiers |= TargetModifiers.ForceAttack;
|
|
||||||
if (mi.Modifiers.HasModifier(Modifiers.Shift))
|
|
||||||
modifiers |= TargetModifiers.ForceQueue;
|
|
||||||
if (mi.Modifiers.HasModifier(Modifiers.Alt))
|
|
||||||
modifiers |= TargetModifiers.ForceMove;
|
|
||||||
|
|
||||||
if (o.Order.TargetOverridesSelection(modifiers))
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user