Use Target range checks in attack activities.

This commit is contained in:
Paul Chote
2013-07-06 15:25:13 +12:00
parent 399aac7e0f
commit 6f67602d57
12 changed files with 39 additions and 39 deletions

View File

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