Cache Orders in Passenger to avoid several repeated allocations when orders must be determined.
This commit is contained in:
@@ -111,22 +111,22 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class Passenger : IIssueOrder, IResolveOrder, IOrderVoice, INotifyRemovedFromWorld
|
public class Passenger : IIssueOrder, IResolveOrder, IOrderVoice, INotifyRemovedFromWorld
|
||||||
{
|
{
|
||||||
public readonly PassengerInfo Info;
|
public readonly PassengerInfo Info;
|
||||||
public Passenger(PassengerInfo info) { Info = info; }
|
public Passenger(PassengerInfo info)
|
||||||
|
{
|
||||||
|
Info = info;
|
||||||
|
Func<Actor, bool> canTarget = IsCorrectCargoType;
|
||||||
|
Func<Actor, bool> useEnterCursor = CanEnter;
|
||||||
|
Orders = new EnterAlliedActorTargeter<Cargo>[]
|
||||||
|
{
|
||||||
|
new EnterTransportTargeter("EnterTransport", 5, canTarget, useEnterCursor, Info.AlternateTransportsMode),
|
||||||
|
new EnterTransportsTargeter("EnterTransports", 5, canTarget, useEnterCursor, Info.AlternateTransportsMode)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public Actor Transport;
|
public Actor Transport;
|
||||||
public Cargo ReservedCargo { get; private set; }
|
public Cargo ReservedCargo { get; private set; }
|
||||||
|
|
||||||
public IEnumerable<IOrderTargeter> Orders
|
public IEnumerable<IOrderTargeter> Orders { get; private set; }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
yield return new EnterTransportTargeter("EnterTransport", 5,
|
|
||||||
target => IsCorrectCargoType(target), target => CanEnter(target),
|
|
||||||
Info.AlternateTransportsMode);
|
|
||||||
yield return new EnterTransportsTargeter("EnterTransports", 5,
|
|
||||||
target => IsCorrectCargoType(target), target => CanEnter(target),
|
|
||||||
Info.AlternateTransportsMode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued)
|
public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user