Fix SendParatroopers return value.

This commit is contained in:
Paul Chote
2019-08-19 09:36:06 +01:00
committed by abcdefg30
parent ab94ea9715
commit f31cfe5b96

View File

@@ -168,6 +168,17 @@ namespace OpenRA.Mods.Common.Traits
} }
}; };
// Create the units immediately so they can be returned
foreach (var p in info.DropItems)
{
var unit = self.World.CreateActor(false, p.ToLowerInvariant(), new TypeDictionary
{
new OwnerInit(self.Owner)
});
units.Add(unit);
}
self.World.AddFrameEndTask(w => self.World.AddFrameEndTask(w =>
{ {
PlayLaunchSounds(); PlayLaunchSounds();
@@ -201,15 +212,9 @@ namespace OpenRA.Mods.Common.Traits
drop.OnRemovedFromWorld += onRemovedFromWorld; drop.OnRemovedFromWorld += onRemovedFromWorld;
var cargo = a.Trait<Cargo>(); var cargo = a.Trait<Cargo>();
foreach (var p in info.DropItems.Skip(added).Take(passengersPerPlane)) foreach (var unit in units.Skip(added).Take(passengersPerPlane))
{ {
var unit = self.World.CreateActor(false, p.ToLowerInvariant(), new TypeDictionary
{
new OwnerInit(self.Owner)
});
cargo.Load(a, unit); cargo.Load(a, unit);
units.Add(unit);
added++; added++;
} }
@@ -220,6 +225,10 @@ namespace OpenRA.Mods.Common.Traits
distanceTestActor = a; distanceTestActor = a;
} }
// Dispose any unused units
for (var i = added; i < units.Count; i++)
units[i].Dispose();
if (Info.DisplayBeacon) if (Info.DisplayBeacon)
{ {
var distance = (target - startEdge).HorizontalLength; var distance = (target - startEdge).HorizontalLength;