Use Target range checks in attack activities.
This commit is contained in:
@@ -28,15 +28,15 @@ namespace OpenRA.Mods.RA
|
||||
public AttackFrontal(Actor self, AttackFrontalInfo info)
|
||||
: base( self ) { this.info = info; }
|
||||
|
||||
protected override bool CanAttack( Actor self, Target target )
|
||||
protected override bool CanAttack(Actor self, Target target)
|
||||
{
|
||||
if( !base.CanAttack( self, target ) )
|
||||
if (!base.CanAttack(self, target))
|
||||
return false;
|
||||
|
||||
var facing = self.Trait<IFacing>().Facing;
|
||||
var facingToTarget = Util.GetFacing(target.CenterLocation - self.CenterLocation, facing);
|
||||
|
||||
if( Math.Abs( facingToTarget - facing ) % 256 > info.FacingTolerance )
|
||||
if (Math.Abs(facingToTarget - facing) % 256 > info.FacingTolerance)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -44,10 +44,13 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
|
||||
{
|
||||
var weapon = ChooseArmamentForTarget(newTarget);
|
||||
if (weapon == null)
|
||||
var a = ChooseArmamentForTarget(newTarget);
|
||||
if (a == null)
|
||||
return null;
|
||||
return new Activities.Attack(newTarget, Math.Max(0, (int)weapon.Weapon.Range), allowMove);
|
||||
|
||||
// TODO: Define weapon ranges as WRange
|
||||
var range = new WRange(Math.Max(0,(int)(1024*a.Weapon.Range)));
|
||||
return new Activities.Attack(newTarget, range, allowMove);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user