diff --git a/OpenRA.Mods.RA/AttackBase.cs b/OpenRA.Mods.RA/AttackBase.cs index d8f9bd567d..a31083abc9 100644 --- a/OpenRA.Mods.RA/AttackBase.cs +++ b/OpenRA.Mods.RA/AttackBase.cs @@ -38,6 +38,14 @@ namespace OpenRA.Mods.RA public readonly float ScanTimeSpread = .5f; public abstract object Create(ActorInitializer init); + + public float GetMaximumRange() + { + var priRange = PrimaryWeapon != null ? Rules.Weapons[PrimaryWeapon.ToLowerInvariant()].Range : 0; + var secRange = SecondaryWeapon != null ? Rules.Weapons[SecondaryWeapon.ToLowerInvariant()].Range : 0; + + return Math.Max(priRange, secRange); + } } public abstract class AttackBase : IIssueOrder, IResolveOrder, ITick, IExplodeModifier, IOrderVoice, ISync diff --git a/OpenRA.Mods.RA/RenderRangeCircle.cs b/OpenRA.Mods.RA/RenderRangeCircle.cs index 4c1ec48434..76a185fc07 100644 --- a/OpenRA.Mods.RA/RenderRangeCircle.cs +++ b/OpenRA.Mods.RA/RenderRangeCircle.cs @@ -21,13 +21,14 @@ namespace OpenRA.Mods.RA class RenderRangeCircleInfo : TraitInfo, IPlaceBuildingDecoration { - public readonly string RangeCircleType; + //public readonly string RangeCircleType; public void Render(WorldRenderer wr, World w, ActorInfo ai, int2 centerLocation) { wr.DrawRangeCircle( Color.FromArgb(128, Color.Yellow), - centerLocation, 3 /* hack: get this from the ActorInfo, but it's nontrivial currently */); + centerLocation, + ai.Traits.Get().GetMaximumRange()); } }