Merge AttackPlane and AttackHeli into AttackAircraft
This commit is contained in:
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
{
|
||||
readonly Target target;
|
||||
readonly Aircraft aircraft;
|
||||
readonly AttackPlane attackPlane;
|
||||
readonly AttackAircraft attackAircraft;
|
||||
readonly Rearmable rearmable;
|
||||
|
||||
int ticksUntilTurn;
|
||||
@@ -29,9 +29,9 @@ namespace OpenRA.Mods.Common.Activities
|
||||
{
|
||||
this.target = target;
|
||||
aircraft = self.Trait<Aircraft>();
|
||||
attackPlane = self.Trait<AttackPlane>();
|
||||
attackAircraft = self.Trait<AttackAircraft>();
|
||||
rearmable = self.TraitOrDefault<Rearmable>();
|
||||
ticksUntilTurn = attackPlane.AttackPlaneInfo.AttackTurnDelay;
|
||||
ticksUntilTurn = attackAircraft.AttackAircraftInfo.AttackTurnDelay;
|
||||
}
|
||||
|
||||
public override Activity Tick(Actor self)
|
||||
@@ -47,10 +47,10 @@ namespace OpenRA.Mods.Common.Activities
|
||||
return NextActivity;
|
||||
|
||||
// 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 && attackPlane.Armaments.All(x => x.IsTraitPaused || !x.Weapon.IsValidAgainst(target, self.World, self)))
|
||||
if (rearmable != null && attackAircraft.Armaments.All(x => x.IsTraitPaused || !x.Weapon.IsValidAgainst(target, self.World, self)))
|
||||
return ActivityUtils.SequenceActivities(new ReturnToBase(self, aircraft.Info.AbortOnResupply), this);
|
||||
|
||||
attackPlane.DoAttack(self, target);
|
||||
attackAircraft.DoAttack(self, target);
|
||||
|
||||
if (ChildActivity == null)
|
||||
{
|
||||
@@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
return NextActivity;
|
||||
|
||||
// TODO: This should fire each weapon at its maximum range
|
||||
if (attackPlane != null && target.IsInRange(self.CenterPosition, attackPlane.Armaments.Where(Exts.IsTraitEnabled).Select(a => a.Weapon.MinRange).Min()))
|
||||
if (attackAircraft != null && target.IsInRange(self.CenterPosition, attackAircraft.Armaments.Where(Exts.IsTraitEnabled).Select(a => a.Weapon.MinRange).Min()))
|
||||
ChildActivity = ActivityUtils.SequenceActivities(new FlyTimed(ticksUntilTurn, self), new Fly(self, target), new FlyTimed(ticksUntilTurn, self));
|
||||
else
|
||||
ChildActivity = ActivityUtils.SequenceActivities(new Fly(self, target), new FlyTimed(ticksUntilTurn, self));
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
public class HeliAttack : Activity
|
||||
{
|
||||
readonly Aircraft aircraft;
|
||||
readonly AttackHeli attackHeli;
|
||||
readonly AttackAircraft attackAircraft;
|
||||
readonly bool attackOnlyVisibleTargets;
|
||||
readonly Rearmable rearmable;
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
{
|
||||
Target = target;
|
||||
aircraft = self.Trait<Aircraft>();
|
||||
attackHeli = self.Trait<AttackHeli>();
|
||||
attackAircraft = self.Trait<AttackAircraft>();
|
||||
this.attackOnlyVisibleTargets = attackOnlyVisibleTargets;
|
||||
rearmable = self.TraitOrDefault<Rearmable>();
|
||||
}
|
||||
@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
return NextActivity;
|
||||
|
||||
var pos = self.CenterPosition;
|
||||
var targetPos = attackHeli.GetTargetPosition(pos, target);
|
||||
var targetPos = attackAircraft.GetTargetPosition(pos, target);
|
||||
if (attackOnlyVisibleTargets && target.Type == TargetType.Actor && canHideUnderFog
|
||||
&& !target.Actor.CanBeViewedByPlayer(self.Owner))
|
||||
{
|
||||
@@ -75,7 +75,7 @@ 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 && attackHeli.Armaments.All(x => x.IsTraitPaused || !x.Weapon.IsValidAgainst(target, self.World, self)))
|
||||
if (rearmable != null && attackAircraft.Armaments.All(x => x.IsTraitPaused || !x.Weapon.IsValidAgainst(target, self.World, self)))
|
||||
return ActivityUtils.SequenceActivities(new HeliReturnToBase(self, aircraft.Info.AbortOnResupply), this);
|
||||
|
||||
var dist = targetPos - pos;
|
||||
@@ -88,11 +88,11 @@ namespace OpenRA.Mods.Common.Activities
|
||||
return this;
|
||||
|
||||
// Fly towards the target
|
||||
if (!target.IsInRange(pos, attackHeli.GetMaximumRangeVersusTarget(target)))
|
||||
if (!target.IsInRange(pos, attackAircraft.GetMaximumRangeVersusTarget(target)))
|
||||
aircraft.SetPosition(self, aircraft.CenterPosition + aircraft.FlyStep(desiredFacing));
|
||||
|
||||
// Fly backwards from the target
|
||||
if (target.IsInRange(pos, attackHeli.GetMinimumRangeVersusTarget(target)))
|
||||
if (target.IsInRange(pos, attackAircraft.GetMinimumRangeVersusTarget(target)))
|
||||
{
|
||||
// Facing 0 doesn't work with the following position change
|
||||
var facing = 1;
|
||||
@@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
aircraft.SetPosition(self, aircraft.CenterPosition + aircraft.FlyStep(-facing));
|
||||
}
|
||||
|
||||
attackHeli.DoAttack(self, target);
|
||||
attackAircraft.DoAttack(self, target);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user