From 8ee11028d72cde7556b31d45f556b40be65b4b70 Mon Sep 17 00:00:00 2001 From: tovl Date: Sat, 30 Mar 2019 16:13:31 +0100 Subject: [PATCH] Replace SequenceActivities with ChildActivity in several air activities. --- OpenRA.Mods.Common/Activities/Air/FlyFollow.cs | 12 +++++++++--- OpenRA.Mods.Common/Activities/Air/HeliAttack.cs | 12 +++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/OpenRA.Mods.Common/Activities/Air/FlyFollow.cs b/OpenRA.Mods.Common/Activities/Air/FlyFollow.cs index 3eb5c3632f..d41b7dee3e 100644 --- a/OpenRA.Mods.Common/Activities/Air/FlyFollow.cs +++ b/OpenRA.Mods.Common/Activities/Air/FlyFollow.cs @@ -47,6 +47,13 @@ namespace OpenRA.Mods.Common.Activities public override Activity Tick(Actor self) { + if (ChildActivity != null) + { + ChildActivity = ActivityUtils.RunActivity(self, ChildActivity); + if (ChildActivity != null) + return this; + } + // Refuse to take off if it would land immediately again. if (aircraft.ForceLanding) Cancel(self); @@ -89,9 +96,8 @@ namespace OpenRA.Mods.Common.Activities } wasMovingWithinRange = true; - return ActivityUtils.SequenceActivities(self, - aircraft.MoveWithinRange(target, minRange, maxRange, checkTarget.CenterPosition, targetLineColor), - this); + QueueChild(self, aircraft.MoveWithinRange(target, minRange, maxRange, checkTarget.CenterPosition, targetLineColor), true); + return this; } } } diff --git a/OpenRA.Mods.Common/Activities/Air/HeliAttack.cs b/OpenRA.Mods.Common/Activities/Air/HeliAttack.cs index 4dd90df45e..9902a47062 100644 --- a/OpenRA.Mods.Common/Activities/Air/HeliAttack.cs +++ b/OpenRA.Mods.Common/Activities/Air/HeliAttack.cs @@ -47,6 +47,13 @@ namespace OpenRA.Mods.Common.Activities public override Activity Tick(Actor self) { + if (ChildActivity != null) + { + ChildActivity = ActivityUtils.RunActivity(self, ChildActivity); + if (ChildActivity != null) + return this; + } + // Refuse to take off if it would land immediately again. if (aircraft.ForceLanding) Cancel(self); @@ -75,7 +82,10 @@ namespace OpenRA.Mods.Common.Activities // If all valid weapons have depleted their ammo and Rearmable trait exists, return to RearmActor to reload and then resume the activity if (rearmable != null && !useLastVisibleTarget && attackAircraft.Armaments.All(x => x.IsTraitPaused || !x.Weapon.IsValidAgainst(target, self.World, self))) - return ActivityUtils.SequenceActivities(self, new HeliReturnToBase(self, aircraft.Info.AbortOnResupply), this); + { + QueueChild(self, new HeliReturnToBase(self, aircraft.Info.AbortOnResupply), true); + return this; + } var pos = self.CenterPosition; var checkTarget = useLastVisibleTarget ? lastVisibleTarget : target;