Merge AttackPlane and AttackHeli into AttackAircraft

This commit is contained in:
reaperrr
2018-10-19 23:22:08 +02:00
committed by Paul Chote
parent 5899636e10
commit e42094625d
10 changed files with 116 additions and 66 deletions

View File

@@ -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));

View File

@@ -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;
}