From a641c7a87d4124015fd0a22ad0b56e5a46227ed3 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 14 Sep 2012 23:14:02 +1200 Subject: [PATCH] add parameter to ReturnToBase.ChooseAirfield for whether the building must be unreserved --- OpenRA.Mods.RA/Air/Plane.cs | 2 +- OpenRA.Mods.RA/Air/ReturnOnIdle.cs | 2 +- OpenRA.Mods.RA/Air/ReturnToBase.cs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.RA/Air/Plane.cs b/OpenRA.Mods.RA/Air/Plane.cs index d1c0f6786c..615e5bcbc8 100755 --- a/OpenRA.Mods.RA/Air/Plane.cs +++ b/OpenRA.Mods.RA/Air/Plane.cs @@ -68,7 +68,7 @@ namespace OpenRA.Mods.RA.Air } else if (order.OrderString == "ReturnToBase") { - var airfield = ReturnToBase.ChooseAirfield(self); + var airfield = ReturnToBase.ChooseAirfield(self, true); if (airfield == null) return; UnReserve(); diff --git a/OpenRA.Mods.RA/Air/ReturnOnIdle.cs b/OpenRA.Mods.RA/Air/ReturnOnIdle.cs index bf923c67b6..ee643df58c 100755 --- a/OpenRA.Mods.RA/Air/ReturnOnIdle.cs +++ b/OpenRA.Mods.RA/Air/ReturnOnIdle.cs @@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA.Air var altitude = self.Trait().Altitude; if (altitude == 0) return; // we're on the ground, let's stay there. - var airfield = ReturnToBase.ChooseAirfield(self); + var airfield = ReturnToBase.ChooseAirfield(self, true); if (airfield != null) { self.QueueActivity(new ReturnToBase(self, airfield)); diff --git a/OpenRA.Mods.RA/Air/ReturnToBase.cs b/OpenRA.Mods.RA/Air/ReturnToBase.cs index ed8c01b83a..0fa24bdf0c 100755 --- a/OpenRA.Mods.RA/Air/ReturnToBase.cs +++ b/OpenRA.Mods.RA/Air/ReturnToBase.cs @@ -22,20 +22,20 @@ namespace OpenRA.Mods.RA.Air PPos w1, w2, w3; /* tangent points to turn circles */ - public static Actor ChooseAirfield(Actor self) + public static Actor ChooseAirfield(Actor self, bool unreservedOnly) { var rearmBuildings = self.Info.Traits.Get().RearmBuildings; return self.World.ActorsWithTrait() .Where(a => a.Actor.Owner == self.Owner) .Where(a => rearmBuildings.Contains(a.Actor.Info.Name) - && !Reservable.IsReserved(a.Actor)) + && (!unreservedOnly || !Reservable.IsReserved(a.Actor))) .Select(a => a.Actor) .ClosestTo( self.CenterLocation ); } void Calculate(Actor self) { - if (dest == null || Reservable.IsReserved(dest)) dest = ChooseAirfield(self); + if (dest == null || Reservable.IsReserved(dest)) dest = ChooseAirfield(self, true); if (dest == null) return;