Update helis logic for returning to hpad, to mirror that of planes returning to aflds

This commit is contained in:
Curtis S
2011-10-22 13:26:51 -06:00
parent 9e21282341
commit 7d9641e195
2 changed files with 29 additions and 16 deletions

View File

@@ -32,10 +32,16 @@ namespace OpenRA.Mods.RA.Air
var initialFacing = self.Info.Traits.Get<AircraftInfo>().InitialFacing; var initialFacing = self.Info.Traits.Get<AircraftInfo>().InitialFacing;
if (dest == null) if (dest == null)
return Util.SequenceActivities( {
new Turn(initialFacing), var rearmBuildings = self.Info.Traits.Get<HelicopterInfo>().RearmBuildings;
new HeliLand(true), var nearestHpad = self.World.ActorsWithTrait<Reservable>()
NextActivity); .Where(a => a.Actor.Owner == self.Owner && rearmBuildings.Contains(a.Actor.Info.Name))
.Select(a => a.Actor)
.ClosestTo(self.CenterLocation);
self.CancelActivity();
return Util.SequenceActivities(new HeliFly(Util.CenterOfCell(nearestHpad.Location)));
}
var res = dest.TraitOrDefault<Reservable>(); var res = dest.TraitOrDefault<Reservable>();
var heli = self.Trait<Helicopter>(); var heli = self.Trait<Helicopter>();

View File

@@ -58,7 +58,13 @@ namespace OpenRA.Mods.RA.Air
if (order.OrderString == "Enter") if (order.OrderString == "Enter")
{ {
if (Reservable.IsReserved(order.TargetActor)) return; if (Reservable.IsReserved(order.TargetActor))
{
self.CancelActivity();
self.QueueActivity(new HeliReturn());
}
else
{
var res = order.TargetActor.TraitOrDefault<Reservable>(); var res = order.TargetActor.TraitOrDefault<Reservable>();
if (res != null) if (res != null)
reservation = res.Reserve(order.TargetActor, self, this); reservation = res.Reserve(order.TargetActor, self, this);
@@ -75,6 +81,7 @@ namespace OpenRA.Mods.RA.Air
QueueResupplyActivities(order.TargetActor); QueueResupplyActivities(order.TargetActor);
} }
}
if (order.OrderString == "ReturnToBase") if (order.OrderString == "ReturnToBase")
{ {