Convert Attack*.FacingTolerance to WAngle.
This commit is contained in:
@@ -169,7 +169,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
QueueChild(new FlyAttackRun(self, target, lastVisibleMaximumRange));
|
||||
|
||||
// Turn to face the target if required.
|
||||
else if (!attackAircraft.TargetInFiringArc(self, target, 4 * attackAircraft.Info.FacingTolerance))
|
||||
else if (!attackAircraft.TargetInFiringArc(self, target, attackAircraft.Info.FacingTolerance))
|
||||
aircraft.Facing = Util.TickFacing(aircraft.Facing, desiredFacing, aircraft.TurnSpeed);
|
||||
|
||||
return false;
|
||||
|
||||
@@ -206,7 +206,7 @@ namespace OpenRA.Mods.Common.Activities
|
||||
return AttackStatus.NeedsToMove;
|
||||
}
|
||||
|
||||
if (!attack.TargetInFiringArc(self, target, 4 * attack.Info.FacingTolerance))
|
||||
if (!attack.TargetInFiringArc(self, target, attack.Info.FacingTolerance))
|
||||
{
|
||||
var desiredFacing = (attack.GetTargetPosition(pos, target) - pos).Yaw;
|
||||
attackStatus |= AttackStatus.NeedsToTurn;
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!base.CanAttack(self, target))
|
||||
return false;
|
||||
|
||||
return TargetInFiringArc(self, target, 4 * base.Info.FacingTolerance);
|
||||
return TargetInFiringArc(self, target, Info.FacingTolerance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
public class AttackBomberInfo : AttackBaseInfo
|
||||
{
|
||||
[Desc("Tolerance for attack angle. Range [0, 128], 128 covers 360 degrees.")]
|
||||
public readonly new int FacingTolerance = 2;
|
||||
[Desc("Tolerance for attack angle. Range [0, 512], 512 covers 360 degrees.")]
|
||||
public readonly new WAngle FacingTolerance = new WAngle(8);
|
||||
|
||||
public override object Create(ActorInitializer init) { return new AttackBomber(init.Self, this); }
|
||||
}
|
||||
@@ -59,7 +59,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
target = Target.FromPos(target.CenterPosition - new WVec(WDist.Zero, WDist.Zero, dat));
|
||||
|
||||
var wasFacingTarget = facingTarget;
|
||||
facingTarget = TargetInFiringArc(self, target, 4 * info.FacingTolerance);
|
||||
facingTarget = TargetInFiringArc(self, target, info.FacingTolerance);
|
||||
|
||||
foreach (var a in Armaments)
|
||||
{
|
||||
|
||||
@@ -52,14 +52,14 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public readonly string Voice = "Action";
|
||||
|
||||
[Desc("Tolerance for attack angle. Range [0, 128], 128 covers 360 degrees.")]
|
||||
public readonly int FacingTolerance = 128;
|
||||
public readonly WAngle FacingTolerance = new WAngle(512);
|
||||
|
||||
public override void RulesetLoaded(Ruleset rules, ActorInfo ai)
|
||||
{
|
||||
base.RulesetLoaded(rules, ai);
|
||||
|
||||
if (FacingTolerance < 0 || FacingTolerance > 128)
|
||||
throw new YamlException("Facing tolerance must be in range of [0, 128], 128 covers 360 degrees.");
|
||||
if (FacingTolerance.Angle > 512)
|
||||
throw new YamlException("Facing tolerance must be in range of [0, 512], 512 covers 360 degrees.");
|
||||
}
|
||||
|
||||
public override abstract object Create(ActorInitializer init);
|
||||
@@ -126,7 +126,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return () => armaments;
|
||||
}
|
||||
|
||||
public bool TargetInFiringArc(Actor self, in Target target, int facingTolerance)
|
||||
public bool TargetInFiringArc(Actor self, in Target target, WAngle facingTolerance)
|
||||
{
|
||||
if (facing == null)
|
||||
return true;
|
||||
|
||||
@@ -91,7 +91,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var armaments = ChooseArmamentsForTarget(target, forceAttack);
|
||||
foreach (var a in armaments)
|
||||
if (target.IsInRange(pos, a.MaxRange()) && (a.Weapon.MinRange == WDist.Zero || !target.IsInRange(pos, a.Weapon.MinRange)))
|
||||
if (TargetInFiringArc(self, target, 4 * Info.FacingTolerance))
|
||||
if (TargetInFiringArc(self, target, Info.FacingTolerance))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
@@ -18,8 +18,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
[Desc("Unit got to face the target")]
|
||||
public class AttackFrontalInfo : AttackBaseInfo, Requires<IFacingInfo>
|
||||
{
|
||||
[Desc("Tolerance for attack angle. Range [0, 128], 128 covers 360 degrees.")]
|
||||
public readonly new int FacingTolerance = 0;
|
||||
[Desc("Tolerance for attack angle. Range [0, 512], 512 covers 360 degrees.")]
|
||||
public readonly new WAngle FacingTolerance = WAngle.Zero;
|
||||
|
||||
public override object Create(ActorInitializer init) { return new AttackFrontal(init.Self, this); }
|
||||
}
|
||||
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!base.CanAttack(self, target))
|
||||
return false;
|
||||
|
||||
return TargetInFiringArc(self, target, 4 * Info.FacingTolerance);
|
||||
return TargetInFiringArc(self, target, Info.FacingTolerance);
|
||||
}
|
||||
|
||||
public override Activity GetAttackActivity(Actor self, AttackSource source, in Target newTarget, bool allowMove, bool forceAttack, Color? targetLineColor = null)
|
||||
|
||||
@@ -414,7 +414,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!armaments.Any())
|
||||
continue;
|
||||
|
||||
if (!allowTurn && !ab.TargetInFiringArc(self, target, 4 * ab.Info.FacingTolerance))
|
||||
if (!allowTurn && !ab.TargetInFiringArc(self, target, ab.Info.FacingTolerance))
|
||||
continue;
|
||||
|
||||
// Evaluate whether we want to target this actor
|
||||
|
||||
@@ -35,9 +35,20 @@ namespace OpenRA.Mods.Common.UpdateRules.Rules
|
||||
{ "FallsToEarth", new[] { "MaximumSpinSpeed" } },
|
||||
{ "ConyardChronoReturn", new[] { "Facing" } },
|
||||
{ "TDGunboat", new[] { "InitialFacing", "PreviewFacing" } },
|
||||
{ "AttackPopupTurreted", new[] { "DefaultFacing" } },
|
||||
{ "DropPodsPower", new[] { "PodFacing" } },
|
||||
{ "TiberianSunRefinery", new[] { "DockAngle" } },
|
||||
{ "AttackAircraft", new[] { "FacingTolerance" } },
|
||||
{ "AttackBomber", new[] { "FacingTolerance" } },
|
||||
{ "AttackCharges", new[] { "FacingTolerance" } },
|
||||
{ "AttackFollow", new[] { "FacingTolerance" } },
|
||||
{ "AttackFrontal", new[] { "FacingTolerance" } },
|
||||
{ "AttackGarrisoned", new[] { "FacingTolerance" } },
|
||||
{ "AttackOmni", new[] { "FacingTolerance" } },
|
||||
{ "AttackTurreted", new[] { "FacingTolerance" } },
|
||||
{ "AttackLeap", new[] { "FacingTolerance" } },
|
||||
{ "AttackPopupTurreted", new[] { "DefaultFacing", "FacingTolerance" } },
|
||||
{ "AttackTDGunboatTurreted", new[] { "FacingTolerance" } },
|
||||
{ "AttackTesla", new[] { "FacingTolerance" } },
|
||||
};
|
||||
|
||||
static readonly Dictionary<string, string[]> ProjectileFields = new Dictionary<string, string[]>()
|
||||
|
||||
@@ -88,13 +88,13 @@ namespace OpenRA.Mods.Common
|
||||
return negative == 0 ? 0 : 256 - negative;
|
||||
}
|
||||
|
||||
public static bool FacingWithinTolerance(WAngle facing, WAngle desiredFacing, int facingTolerance)
|
||||
public static bool FacingWithinTolerance(WAngle facing, WAngle desiredFacing, WAngle facingTolerance)
|
||||
{
|
||||
if (facingTolerance == 0 && facing == desiredFacing)
|
||||
if (facingTolerance.Angle == 0 && facing == desiredFacing)
|
||||
return true;
|
||||
|
||||
var delta = (desiredFacing - facing).Angle;
|
||||
return delta <= facingTolerance || delta >= 1024 - facingTolerance;
|
||||
return delta <= facingTolerance.Angle || delta >= 1024 - facingTolerance.Angle;
|
||||
}
|
||||
|
||||
public static WPos BetweenCells(World w, CPos from, CPos to)
|
||||
|
||||
@@ -87,7 +87,7 @@ HELI:
|
||||
AutoTarget:
|
||||
ScanRadius: 4
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
OpportunityFire: false
|
||||
PersistentTargeting: false
|
||||
AttackType: Hover
|
||||
@@ -152,7 +152,7 @@ ORCA:
|
||||
AutoTarget:
|
||||
ScanRadius: 5
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
OpportunityFire: false
|
||||
PersistentTargeting: false
|
||||
AttackType: Hover
|
||||
|
||||
@@ -79,7 +79,7 @@ MIG:
|
||||
LocalYaw: -40, 24
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
OpportunityFire: False
|
||||
Aircraft:
|
||||
@@ -152,7 +152,7 @@ YAK:
|
||||
MuzzleSequence: muzzle
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
OpportunityFire: False
|
||||
Aircraft:
|
||||
@@ -276,7 +276,7 @@ HELI:
|
||||
LocalOffset: 0,213,-85, 0,-213,-85
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
AttackType: Hover
|
||||
OpportunityFire: False
|
||||
@@ -349,7 +349,7 @@ HIND:
|
||||
MuzzleSequence: muzzle
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
AttackType: Hover
|
||||
OpportunityFire: False
|
||||
@@ -452,7 +452,7 @@ MH60:
|
||||
MuzzleSequence: muzzle
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
AttackType: Hover
|
||||
Aircraft:
|
||||
|
||||
@@ -735,7 +735,7 @@ DTRK:
|
||||
EmptyWeapon: MiniNuke
|
||||
DamageSource: Killer
|
||||
AttackFrontal:
|
||||
FacingTolerance: 128
|
||||
FacingTolerance: 512
|
||||
Armament@PRIMARY:
|
||||
Weapon: DemoTruckTargeting
|
||||
GrantConditionOnAttack:
|
||||
|
||||
@@ -154,7 +154,7 @@ ORCA:
|
||||
Weapon: Hellfire
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
Voice: Attack
|
||||
PauseOnCondition: empdisable
|
||||
@@ -219,7 +219,7 @@ ORCAB:
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
Voice: Attack
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
PauseOnCondition: empdisable
|
||||
AmmoPool:
|
||||
@@ -372,7 +372,7 @@ SCRIN:
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
Voice: Attack
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
PauseOnCondition: empdisable
|
||||
AmmoPool:
|
||||
@@ -435,7 +435,7 @@ APACHE:
|
||||
Weapon: HarpyClaw
|
||||
PauseOnCondition: !ammo
|
||||
AttackAircraft:
|
||||
FacingTolerance: 20
|
||||
FacingTolerance: 80
|
||||
PersistentTargeting: false
|
||||
Voice: Attack
|
||||
PauseOnCondition: empdisable
|
||||
@@ -491,7 +491,7 @@ HUNTER:
|
||||
CruisingCondition: cruising
|
||||
MoveIntoShroud: true
|
||||
AttackAircraft:
|
||||
FacingTolerance: 128
|
||||
FacingTolerance: 512
|
||||
AttackType: Hover
|
||||
Armament@PRIMARY:
|
||||
Weapon: SuicideBomb
|
||||
|
||||
Reference in New Issue
Block a user