From 5a173a2bd3be8f6f92546e368f2e9184597a223f Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 13 Sep 2010 17:46:56 +1200 Subject: [PATCH] Fix #137 (selection cursor on non-selectable actors) --- OpenRA.Game/Orders/UnitOrderGenerator.cs | 25 +++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/OpenRA.Game/Orders/UnitOrderGenerator.cs b/OpenRA.Game/Orders/UnitOrderGenerator.cs index e2b432fd98..d088a8a75b 100644 --- a/OpenRA.Game/Orders/UnitOrderGenerator.cs +++ b/OpenRA.Game/Orders/UnitOrderGenerator.cs @@ -19,8 +19,13 @@ namespace OpenRA.Orders { public IEnumerable Order( World world, int2 xy, MouseInput mi ) { + var underCursor = world.FindUnitsAtMouse(mi.Location) + .Where(a => a.Info.Traits.Contains()) + .OrderByDescending(a => a.Info.Traits.Contains() ? a.Info.Traits.Get().Priority : int.MinValue) + .FirstOrDefault(); + var orders = world.Selection.Actors - .Select(a => a.Order(xy, mi, UnderCursor(world, mi))) + .Select(a => a.Order(xy, mi, underCursor)) .Where(o => o != null) .ToArray(); @@ -55,20 +60,18 @@ namespace OpenRA.Orders Game.Renderer.Flush(); } - public Actor UnderCursor(World world, MouseInput mi) - { - return world.FindUnitsAtMouse(mi.Location) - .Where(a => a.Info.Traits.Contains()) - .OrderByDescending(a => a.Info.Traits.Contains() ? a.Info.Traits.Get().Priority : int.MinValue) - .FirstOrDefault(); - } - public string GetCursor( World world, int2 xy, MouseInput mi ) { if (mi.Modifiers.HasModifier(Modifiers.Shift) || !world.Selection.Actors.Any()) - if (UnderCursor(world, mi) != null) + { + var underCursor = world.FindUnitsAtMouse(mi.Location) + .Where(a => a.Info.Traits.Contains()) + .Any(); + + if (underCursor) return "select"; - + } + var c = Order(world, xy, mi) .Select(o => o.Subject.TraitsImplementing() .Select(pc => pc.CursorForOrder(o.Subject, o)).FirstOrDefault(a => a != null))