From 6749060e57f292c069a13951ca56e2b9eda54978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-R=C3=A9my=20Buchs?= Date: Sat, 3 Jun 2017 00:37:59 +0200 Subject: [PATCH] Add RangeCircleMode to trait RenderRangeCircle --- .../Traits/Render/RenderRangeCircle.cs | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Render/RenderRangeCircle.cs b/OpenRA.Mods.Common/Traits/Render/RenderRangeCircle.cs index 338027a5ea..6a3b7f9367 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderRangeCircle.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderRangeCircle.cs @@ -19,14 +19,25 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Render { + public enum RangeCircleMode { Maximum, Minimum } + [Desc("Draw a circle indicating my weapon's range.")] class RenderRangeCircleInfo : ITraitInfo, IPlaceBuildingDecorationInfo, IRulesetLoaded, Requires { public readonly string RangeCircleType = null; - [Desc("Range to draw if no armaments are available")] + [Desc("Range to draw if no armaments are available.")] public readonly WDist FallbackRange = WDist.Zero; + [Desc("Which circle to show. Valid values are `Maximum`, and `Minimum`.")] + public readonly RangeCircleMode RangeCircleMode = RangeCircleMode.Maximum; + + [Desc("Color of the circle.")] + public readonly Color Color = Color.FromArgb(128, Color.Yellow); + + [Desc("Color of the border of the circle.")] + public readonly Color BorderColor = Color.FromArgb(96, Color.Black); + // Computed range Lazy range; @@ -39,8 +50,8 @@ namespace OpenRA.Mods.Common.Traits.Render centerPosition, range.Value, 0, - Color.FromArgb(128, Color.Yellow), - Color.FromArgb(96, Color.Black)); + this.Color, + this.BorderColor); var otherRanges = w.ActorsWithTrait() .Where(a => a.Trait.Info.RangeCircleType == RangeCircleType) @@ -85,7 +96,7 @@ namespace OpenRA.Mods.Common.Traits.Render if (!self.Owner.IsAlliedWith(self.World.RenderPlayer)) yield break; - var range = attack.GetMaximumRange(); + var range = Info.RangeCircleMode == RangeCircleMode.Minimum ? attack.GetMinimumRange() : attack.GetMaximumRange(); if (range == WDist.Zero) yield break; @@ -93,8 +104,8 @@ namespace OpenRA.Mods.Common.Traits.Render self.CenterPosition, range, 0, - Color.FromArgb(128, Color.Yellow), - Color.FromArgb(96, Color.Black)); + Info.Color, + Info.BorderColor); } IEnumerable IRenderAboveShroudWhenSelected.RenderAboveShroud(Actor self, WorldRenderer wr)