From eab0e7ddf99b788cd61c6bac6b0c85adb6f6475f Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 6 Apr 2012 18:35:04 +1200 Subject: [PATCH] add range circle for gap generator --- OpenRA.Game/Traits/CreatesShroud.cs | 4 +-- OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + OpenRA.Mods.RA/RenderShroudCircle.cs | 45 ++++++++++++++++++++++++++++ mods/ra/rules/structures.yaml | 1 + 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 OpenRA.Mods.RA/RenderShroudCircle.cs diff --git a/OpenRA.Game/Traits/CreatesShroud.cs b/OpenRA.Game/Traits/CreatesShroud.cs index 95e785d32a..93f14fa1cc 100644 --- a/OpenRA.Game/Traits/CreatesShroud.cs +++ b/OpenRA.Game/Traits/CreatesShroud.cs @@ -12,13 +12,13 @@ using System.Linq; namespace OpenRA.Traits { - class CreatesShroudInfo : ITraitInfo + public class CreatesShroudInfo : ITraitInfo { public readonly int Range = 0; public object Create(ActorInitializer init) { return new CreatesShroud(this); } } - class CreatesShroud : ITick + public class CreatesShroud : ITick { CreatesShroudInfo Info; diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 6dba681598..bb21104cb3 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -360,6 +360,7 @@ + diff --git a/OpenRA.Mods.RA/RenderShroudCircle.cs b/OpenRA.Mods.RA/RenderShroudCircle.cs new file mode 100644 index 0000000000..738942fe10 --- /dev/null +++ b/OpenRA.Mods.RA/RenderShroudCircle.cs @@ -0,0 +1,45 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see COPYING. + */ +#endregion + +using System.Drawing; +using OpenRA.Graphics; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA +{ + class RenderShroudCircleInfo : TraitInfo, IPlaceBuildingDecoration + { + public void Render(WorldRenderer wr, World w, ActorInfo ai, int2 centerLocation) + { + wr.DrawRangeCircle( + Color.FromArgb(128, Color.Cyan), + centerLocation, + ai.Traits.Get().Range); + + foreach (var a in w.ActorsWithTrait()) + if (a.Actor.Owner == a.Actor.World.LocalPlayer) + a.Trait.RenderBeforeWorld(wr, a.Actor); + } + } + + class RenderShroudCircle : IPreRenderSelection + { + public void RenderBeforeWorld(WorldRenderer wr, Actor self) + { + if (self.Owner != self.World.LocalPlayer) + return; + + wr.DrawRangeCircle( + Color.FromArgb(128, Color.Cyan), + self.CenterLocation, (int)self.Info.Traits.Get().Range); + } + } +} + diff --git a/mods/ra/rules/structures.yaml b/mods/ra/rules/structures.yaml index ebd6bdb88e..c505622049 100644 --- a/mods/ra/rules/structures.yaml +++ b/mods/ra/rules/structures.yaml @@ -64,6 +64,7 @@ GAP: CreatesShroud: Range: 6 IronCurtainable: + RenderShroudCircle: SPEN: Inherits: ^Building