Hack around the Lua API.

This commit is contained in:
Paul Chote
2016-09-26 17:48:25 +01:00
parent 3487d6bad5
commit 34b10dcb77
7 changed files with 18 additions and 14 deletions

View File

@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Activities
// TODO: This should check whether there is ammo left that is actually suitable for the target
if (ammoPools.All(x => !x.Info.SelfReloads && !x.HasAmmo()))
return ActivityUtils.SequenceActivities(new ReturnToBase(self), this);
return ActivityUtils.SequenceActivities(new ReturnToBase(self, aircraft.Info.AbortOnResupply), this);
if (attackPlane != null)
attackPlane.DoAttack(self, target);

View File

@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.Activities
// If any AmmoPool is depleted and no weapon is valid against target, return to helipad to reload and then resume the activity
if (ammoPools.Any(x => !x.Info.SelfReloads && !x.HasAmmo()) && !attackHeli.HasAnyValidWeapons(target))
return ActivityUtils.SequenceActivities(new HeliReturnToBase(self), this);
return ActivityUtils.SequenceActivities(new HeliReturnToBase(self, helicopter.Info.AbortOnResupply), this);
var dist = target.CenterPosition - self.CenterPosition;

View File

@@ -20,11 +20,13 @@ namespace OpenRA.Mods.Common.Activities
{
readonly Aircraft heli;
readonly bool alwaysLand;
readonly bool abortOnResupply;
public HeliReturnToBase(Actor self, bool alwaysLand = true)
public HeliReturnToBase(Actor self, bool abortOnResupply, bool alwaysLand = true)
{
heli = self.Trait<Aircraft>();
this.alwaysLand = alwaysLand;
this.abortOnResupply = abortOnResupply;
}
public Actor ChooseHelipad(Actor self)
@@ -82,7 +84,7 @@ namespace OpenRA.Mods.Common.Activities
new Turn(self, initialFacing),
new HeliLand(self, false),
new ResupplyAircraft(self),
!heli.Info.AbortOnResupply ? NextActivity : null);
!abortOnResupply ? NextActivity : null);
}
return ActivityUtils.SequenceActivities(

View File

@@ -23,14 +23,16 @@ namespace OpenRA.Mods.Common.Activities
readonly Aircraft plane;
readonly AircraftInfo planeInfo;
readonly bool alwaysLand;
readonly bool abortOnResupply;
bool isCalculated;
Actor dest;
WPos w1, w2, w3;
public ReturnToBase(Actor self, Actor dest = null, bool alwaysLand = true)
public ReturnToBase(Actor self, bool abortOnResupply, Actor dest = null, bool alwaysLand = true)
{
this.dest = dest;
this.alwaysLand = alwaysLand;
this.abortOnResupply = abortOnResupply;
plane = self.Trait<Aircraft>();
planeInfo = self.Info.TraitInfo<AircraftInfo>();
}
@@ -149,7 +151,7 @@ namespace OpenRA.Mods.Common.Activities
landingProcedures.Add(new ResupplyAircraft(self));
}
if (!planeInfo.AbortOnResupply)
if (!abortOnResupply)
landingProcedures.Add(NextActivity);
return ActivityUtils.SequenceActivities(landingProcedures.ToArray());

View File

@@ -42,9 +42,9 @@ namespace OpenRA.Mods.Common.Scripting
public void ReturnToBase(Actor airfield = null)
{
if (isPlane)
Self.QueueActivity(new ReturnToBase(Self, airfield));
Self.QueueActivity(new ReturnToBase(Self, false, airfield));
else
Self.QueueActivity(new HeliReturnToBase(Self));
Self.QueueActivity(new HeliReturnToBase(Self, false));
}
[ScriptActorPropertyActivity]

View File

@@ -562,9 +562,9 @@ namespace OpenRA.Mods.Common.Traits
if (Reservable.IsReserved(order.TargetActor))
{
if (IsPlane)
self.QueueActivity(new ReturnToBase(self));
self.QueueActivity(new ReturnToBase(self, Info.AbortOnResupply));
else
self.QueueActivity(new HeliReturnToBase(self));
self.QueueActivity(new HeliReturnToBase(self, Info.AbortOnResupply));
}
else
{
@@ -573,7 +573,7 @@ namespace OpenRA.Mods.Common.Traits
if (IsPlane)
{
self.QueueActivity(order.Queued, ActivityUtils.SequenceActivities(
new ReturnToBase(self, order.TargetActor),
new ReturnToBase(self, Info.AbortOnResupply, order.TargetActor),
new ResupplyAircraft(self)));
}
else
@@ -621,9 +621,9 @@ namespace OpenRA.Mods.Common.Traits
UnReserve();
self.CancelActivity();
if (IsPlane)
self.QueueActivity(new ReturnToBase(self, null, false));
self.QueueActivity(new ReturnToBase(self, Info.AbortOnResupply, null, false));
else
self.QueueActivity(new HeliReturnToBase(self, false));
self.QueueActivity(new HeliReturnToBase(self, Info.AbortOnResupply, false));
}
}

View File

@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Traits
var airfield = ReturnToBase.ChooseAirfield(self, true);
if (airfield != null)
{
self.QueueActivity(new ReturnToBase(self, airfield));
self.QueueActivity(new ReturnToBase(self, aircraftInfo.AbortOnResupply, airfield));
self.QueueActivity(new ResupplyAircraft(self));
}
else