From 3209da4a4a194b15c30190bedc8df07e40fccf7e Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 3 Oct 2010 07:42:41 +1300 Subject: [PATCH] fixed PlaceBuilding and Chronosphere ordergenerators --- .../Orders/PlaceBuildingOrderGenerator.cs | 8 +++++++- .../SupportPowers/ChronoshiftPower.cs | 20 ++++++++++++++++--- .../SupportPowers/IronCurtainPower.cs | 7 +++++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs b/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs index be73f53a84..eafc78f605 100755 --- a/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs +++ b/OpenRA.Mods.RA/Orders/PlaceBuildingOrderGenerator.cs @@ -32,7 +32,13 @@ namespace OpenRA.Mods.RA.Orders if (mi.Button == MouseButton.Right) world.CancelInputMode(); - return InnerOrder(world, xy, mi); + var ret = InnerOrder( world, xy, mi ).ToList(); + foreach( var order in ret ) + { + world.CancelInputMode(); + break; + } + return ret; } IEnumerable InnerOrder(World world, int2 xy, MouseInput mi) diff --git a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs index edcf89a1b6..e2150557a8 100755 --- a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA if (order.OrderString == "ChronosphereSelect" && self.Owner == self.World.LocalPlayer) { - self.World.OrderGenerator = new SelectDestination(order.TargetActor); + //self.World.OrderGenerator = new SelectDestination(order.TargetActor); } if (order.OrderString == "ChronosphereActivate") @@ -60,7 +60,13 @@ namespace OpenRA.Mods.RA if (mi.Button == MouseButton.Right) world.CancelInputMode(); - return OrderInner(world, xy, mi); + var ret = OrderInner( world, xy, mi ).ToList(); + foreach( var order in ret ) + { + world.OrderGenerator = new SelectDestination(order.TargetActor); + break; + } + return ret; } IEnumerable OrderInner(World world, int2 xy, MouseInput mi) @@ -109,11 +115,19 @@ namespace OpenRA.Mods.RA public IEnumerable Order(World world, int2 xy, MouseInput mi) { if (mi.Button == MouseButton.Right) + world.CancelInputMode(); + + var ret = OrderInner( world, xy, mi ).ToList(); + foreach( var order in ret ) { world.CancelInputMode(); - yield break; + break; } + return ret; + } + IEnumerable OrderInner(World world, int2 xy, MouseInput mi) + { // Cannot chronoshift into unexplored location if (world.LocalPlayer.Shroud.IsExplored(xy)) yield return new Order("ChronosphereActivate", world.LocalPlayer.PlayerActor, self, xy); diff --git a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs index b8f4fe4b47..babbe7beac 100755 --- a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs @@ -75,8 +75,11 @@ namespace OpenRA.Mods.RA && a.HasTrait() && a.HasTrait()).FirstOrDefault(); - if (underCursor != null) - yield return new Order("IronCurtain", underCursor.Owner.PlayerActor, underCursor); + if( underCursor != null ) + { + world.CancelInputMode(); + yield return new Order( "IronCurtain", underCursor.Owner.PlayerActor, underCursor ); + } } yield break;