diff --git a/OpenRA.Game/Orders/UnitOrderGenerator.cs b/OpenRA.Game/Orders/UnitOrderGenerator.cs index ae1db35602..bc48460593 100644 --- a/OpenRA.Game/Orders/UnitOrderGenerator.cs +++ b/OpenRA.Game/Orders/UnitOrderGenerator.cs @@ -21,11 +21,7 @@ namespace OpenRA.Orders { var underCursor = world.FindUnitsAtMouse(mi.Location) .Where(a => a.HasTrait()) - .OrderByDescending( - a => - a.Info.Traits.Contains() - ? a.Info.Traits.Get().Priority - : int.MinValue) + .OrderByDescending(a => a.SelectionPriority()) .FirstOrDefault(); var orders = world.Selection.Actors @@ -55,7 +51,7 @@ namespace OpenRA.Orders var underCursor = world.FindUnitsAtMouse(mi.Location) .Where(a => a.HasTrait()) - .OrderByDescending(a => a.Info.Traits.Contains() ? a.Info.Traits.Get().Priority : int.MinValue) + .OrderByDescending(a => a.SelectionPriority()) .FirstOrDefault(); if (mi.Modifiers.HasModifier(Modifiers.Shift) || !world.Selection.Actors.Any()) @@ -130,4 +126,13 @@ namespace OpenRA.Orders } } } + + public static class SelectableExts + { + public static int SelectionPriority(this Actor a) + { + var selectableInfo = a.Info.Traits.GetOrDefault(); + return selectableInfo != null ? selectableInfo.Priority : int.MinValue; + } + } }