From 39c5877ebcae9cd6fe64d3fc4f94451fefae9de7 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 16 May 2010 11:35:02 +1200 Subject: [PATCH] mod UOG to create a group from all actors that generate orders together for a ui action --- OpenRA.Game/Orders/UnitOrderGenerator.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/OpenRA.Game/Orders/UnitOrderGenerator.cs b/OpenRA.Game/Orders/UnitOrderGenerator.cs index 6e57f27e23..fff3814362 100644 --- a/OpenRA.Game/Orders/UnitOrderGenerator.cs +++ b/OpenRA.Game/Orders/UnitOrderGenerator.cs @@ -30,12 +30,18 @@ namespace OpenRA.Orders { public IEnumerable Order( World world, int2 xy, MouseInput mi ) { - foreach( var unit in Game.controller.selection.Actors ) - { - var ret = unit.Order( xy, mi ); - if( ret != null ) - yield return ret; - } + var orders = Game.controller.selection.Actors + .Select(a => a.Order(xy, mi)) + .Where(o => o != null) + .ToArray(); + + var actorsInvolved = orders.Select(o => o.TargetActor).Distinct(); + if (actorsInvolved.Any()) + yield return new Order("CreateGroup", actorsInvolved.First().Owner.PlayerActor, + string.Join(",", actorsInvolved.Select(a => a.ActorID.ToString()).ToArray())); + + foreach (var o in orders) + yield return o; } public void Tick( World world ) {}