Merge pull request #11008 from pchote/left-click-guard-fix

Fix order generator vs unit targeting under left click orders.
This commit is contained in:
Matthias Mailänder
2016-04-02 11:15:09 +02:00
2 changed files with 10 additions and 4 deletions

View File

@@ -100,9 +100,13 @@ namespace OpenRA.Widgets
{
if (!IsValidDragbox && World.Selection.Actors.Any() && !multiClick)
{
if (!(World.ScreenMap.ActorsAt(mousePos).Any(x => x.Info.HasTraitInfo<SelectableInfo>() &&
(x.Owner.IsAlliedWith(World.RenderPlayer) || !World.FogObscures(x))) && !mi.Modifiers.HasModifier(Modifiers.Ctrl) &&
!mi.Modifiers.HasModifier(Modifiers.Alt) && UnitOrderGenerator.InputOverridesSelection(World, mousePos, mi)))
var selectableActor = World.ScreenMap.ActorsAt(mousePos).Any(x =>
x.Info.HasTraitInfo<SelectableInfo>() && (x.Owner.IsAlliedWith(World.RenderPlayer) || !World.FogObscures(x)));
var ignoreSelection = mi.Modifiers.HasModifier(Modifiers.Ctrl) || mi.Modifiers.HasModifier(Modifiers.Alt) ||
UnitOrderGenerator.InputOverridesSelection(World, mousePos, mi);
if (ignoreSelection || !selectableActor)
{
// Order units instead of selecting
ApplyOrders(World, mi);

View File

@@ -23,8 +23,10 @@ namespace OpenRA.Mods.Common.Orders
protected override IEnumerable<Order> OrderInner(World world, CPos xy, MouseInput mi)
{
var target = FriendlyGuardableUnits(world, mi).FirstOrDefault();
if (mi.Button != ExpectedButton)
yield break;
var target = FriendlyGuardableUnits(world, mi).FirstOrDefault();
if (target == null || Subjects.All(s => s.IsDead))
yield break;