From 7dc654a5ad270002bc005cb648a515b57fa36c89 Mon Sep 17 00:00:00 2001 From: RoosterDragon Date: Thu, 9 Jul 2015 20:28:32 +0100 Subject: [PATCH] Cache Orders in Passenger to avoid several repeated allocations when orders must be determined. --- OpenRA.Mods.Common/Traits/Passenger.cs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Passenger.cs b/OpenRA.Mods.Common/Traits/Passenger.cs index aa805dee37..0df46d9083 100644 --- a/OpenRA.Mods.Common/Traits/Passenger.cs +++ b/OpenRA.Mods.Common/Traits/Passenger.cs @@ -111,22 +111,22 @@ namespace OpenRA.Mods.Common.Traits public class Passenger : IIssueOrder, IResolveOrder, IOrderVoice, INotifyRemovedFromWorld { public readonly PassengerInfo Info; - public Passenger(PassengerInfo info) { Info = info; } + public Passenger(PassengerInfo info) + { + Info = info; + Func canTarget = IsCorrectCargoType; + Func useEnterCursor = CanEnter; + Orders = new EnterAlliedActorTargeter[] + { + new EnterTransportTargeter("EnterTransport", 5, canTarget, useEnterCursor, Info.AlternateTransportsMode), + new EnterTransportsTargeter("EnterTransports", 5, canTarget, useEnterCursor, Info.AlternateTransportsMode) + }; + } + public Actor Transport; public Cargo ReservedCargo { get; private set; } - public IEnumerable Orders - { - 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 IEnumerable Orders { get; private set; } public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued) {