Remove AlternateTransportsMode.
This conflicts with undeploy orders and has been largely superseded by queued enter orders.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user