Make HeliReturnToBase use a landingProcedures list

Like ReturnToBase already does. Makes them easier to compare and later merge.
This commit is contained in:
reaperrr
2018-11-01 00:15:18 +01:00
committed by abcdefg30
parent 577fc1c409
commit e2227b9450

View File

@@ -9,6 +9,7 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Activities; using OpenRA.Activities;
using OpenRA.Mods.Common.Traits; using OpenRA.Mods.Common.Traits;
@@ -95,24 +96,26 @@ namespace OpenRA.Mods.Common.Activities
} }
} }
var landingProcedures = new List<Activity>();
var exit = dest.FirstExitOrDefault(null); var exit = dest.FirstExitOrDefault(null);
var offset = exit != null ? exit.Info.SpawnOffset : WVec.Zero; var offset = exit != null ? exit.Info.SpawnOffset : WVec.Zero;
landingProcedures.Add(new HeliFly(self, Target.FromPos(dest.CenterPosition + offset)));
if (ShouldLandAtBuilding(self, dest)) if (ShouldLandAtBuilding(self, dest))
{ {
aircraft.MakeReservation(dest); aircraft.MakeReservation(dest);
return ActivityUtils.SequenceActivities( landingProcedures.Add(new Turn(self, initialFacing));
new HeliFly(self, Target.FromPos(dest.CenterPosition + offset)), landingProcedures.Add(new HeliLand(self, false));
new Turn(self, initialFacing), landingProcedures.Add(new ResupplyAircraft(self));
new HeliLand(self, false), if (!abortOnResupply)
new ResupplyAircraft(self), landingProcedures.Add(NextActivity);
!abortOnResupply ? NextActivity : null);
} }
else
landingProcedures.Add(NextActivity);
return ActivityUtils.SequenceActivities( return ActivityUtils.SequenceActivities(landingProcedures.ToArray());
new HeliFly(self, Target.FromPos(dest.CenterPosition + offset)),
NextActivity);
} }
bool ShouldLandAtBuilding(Actor self, Actor dest) bool ShouldLandAtBuilding(Actor self, Actor dest)