Force selection cursor when selection overrides input.
This commit is contained in:
@@ -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() { }
|
||||||
|
|||||||
Reference in New Issue
Block a user