Remove AlternateTransportsMode.

This conflicts with undeploy orders and has been largely
superseded by queued enter orders.
This commit is contained in:
Paul Chote
2019-05-28 21:22:09 +00:00
committed by reaperrr
parent ecd8dee575
commit 5d886b79f1
8 changed files with 20 additions and 197 deletions

View File

@@ -80,57 +80,4 @@ namespace OpenRA.Mods.Common.Activities
base.Cancel(self, keepQueue);
}
}
class EnterTransports : Activity
{
readonly string type;
readonly Passenger passenger;
public EnterTransports(Actor self, Target primaryTarget)
{
passenger = self.Trait<Passenger>();
if (primaryTarget.Type == TargetType.Actor)
type = primaryTarget.Actor.Info.Name;
QueueChild(self, new EnterTransport(self, primaryTarget));
}
public override Activity Tick(Actor self)
{
if (ChildActivity != null)
{
ChildActivity = ActivityUtils.RunActivity(self, ChildActivity);
if (ChildActivity != null)
return this;
}
// Try and find a new transport nearby
if (IsCanceling || string.IsNullOrEmpty(type))
return NextActivity;
Func<Actor, bool> isValidTransport = a =>
{
var c = a.TraitOrDefault<Cargo>();
return c != null && c.Info.Types.Contains(passenger.Info.CargoType) &&
(c.Unloading || c.CanLoad(a, self));
};
var candidates = self.World.FindActorsInCircle(self.CenterPosition, passenger.Info.AlternateTransportScanRange)
.Where(isValidTransport)
.ToList();
// Prefer transports of the same type as the primary
var transport = candidates.Where(a => a.Info.Name == type).ClosestTo(self);
if (transport == null)
transport = candidates.ClosestTo(self);
if (transport != null)
{
QueueChild(self, ActivityUtils.RunActivity(self, new EnterTransport(self, Target.FromActor(transport))), true);
return this;
}
return NextActivity;
}
}
}