From 0326d2bbd0cdba7ad18ead63bf6c731fe6a43859 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 10 Jul 2013 20:03:53 +1200 Subject: [PATCH] Use WRange for Follow. --- OpenRA.Mods.RA/Activities/Follow.cs | 10 ++++------ OpenRA.Mods.RA/Attack/AttackTurreted.cs | 7 +++---- OpenRA.Mods.RA/Guard.cs | 4 +++- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/OpenRA.Mods.RA/Activities/Follow.cs b/OpenRA.Mods.RA/Activities/Follow.cs index 1c4e757e2a..70827aeb6b 100644 --- a/OpenRA.Mods.RA/Activities/Follow.cs +++ b/OpenRA.Mods.RA/Activities/Follow.cs @@ -16,13 +16,13 @@ namespace OpenRA.Mods.RA.Activities public class Follow : Activity { Target target; - int range; + WRange range; int nextPathTime; const int delayBetweenPathingAttempts = 20; const int delaySpread = 5; - public Follow(Target target, int range) + public Follow(Target target, WRange range) { this.target = target; this.range = range; @@ -33,16 +33,14 @@ namespace OpenRA.Mods.RA.Activities if (IsCanceled || !target.IsValid) return NextActivity; - var inRange = (target.CenterPosition.ToCPos() - self.Location).LengthSquared < range * range; - - if (inRange || --nextPathTime > 0) + if (target.IsInRange(self.CenterPosition, range) || --nextPathTime > 0) return this; nextPathTime = self.World.SharedRandom.Next(delayBetweenPathingAttempts - delaySpread, delayBetweenPathingAttempts + delaySpread); var mobile = self.Trait(); - return Util.SequenceActivities(mobile.MoveWithinRange(target, new WRange(1024*range)), this); + return Util.SequenceActivities(mobile.MoveWithinRange(target, range), this); } } } diff --git a/OpenRA.Mods.RA/Attack/AttackTurreted.cs b/OpenRA.Mods.RA/Attack/AttackTurreted.cs index 24d35c868d..06c944ce44 100644 --- a/OpenRA.Mods.RA/Attack/AttackTurreted.cs +++ b/OpenRA.Mods.RA/Attack/AttackTurreted.cs @@ -95,12 +95,11 @@ namespace OpenRA.Mods.RA if (weapon != null) { - attack.target = target; + var range = WRange.FromCells(Math.Max(0, (int)weapon.Weapon.Range - RangeTolerance)); + attack.target = target; if (allowMove && self.HasTrait() && !self.Info.Traits.Get().OnRails) - return Util.SequenceActivities( - new Follow( target, Math.Max( 0, (int)weapon.Weapon.Range - RangeTolerance ) ), - this ); + return Util.SequenceActivities(new Follow(target, range), this); } return NextActivity; diff --git a/OpenRA.Mods.RA/Guard.cs b/OpenRA.Mods.RA/Guard.cs index 12efeca889..355976d44b 100644 --- a/OpenRA.Mods.RA/Guard.cs +++ b/OpenRA.Mods.RA/Guard.cs @@ -28,8 +28,10 @@ namespace OpenRA.Mods.RA { var target = Target.FromActor(order.TargetActor); self.SetTargetLine(target, Color.Yellow); + + var range = WRange.FromCells(target.Actor.Info.Traits.Get().Range); self.QueueActivity(false, new AttackMove.AttackMoveActivity(self, - new Follow(target, target.Actor.Info.Traits.Get().Range))); + new Follow(target, range))); } }