Skip to content

Commit

Permalink
Adds a new trait called RenderDisruptionCircle.
Browse files Browse the repository at this point in the history
  • Loading branch information
deniz1a committed Apr 27, 2015
1 parent 80834fb commit a479aa8
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 1 deletion.
1 change: 1 addition & 0 deletions OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
<Compile Include="Traits\Minelayer.cs" />
<Compile Include="Traits\PaletteEffects\ChronoshiftPaletteEffect.cs" />
<Compile Include="Traits\PortableChrono.cs" />
<Compile Include="Traits\Render\RenderDisruptionCircle.cs" />
<Compile Include="Traits\Render\RenderJammerCircle.cs" />
<Compile Include="Traits\Render\RenderLandingCraft.cs" />
<Compile Include="Traits\Render\RenderShroudCircle.cs" />
Expand Down
62 changes: 62 additions & 0 deletions OpenRA.Mods.RA/Traits/Render/RenderDisruptionCircle.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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.Collections.Generic;
using System.Drawing;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;

namespace OpenRA.Mods.RA.Traits
{
class RenderDisruptionCircleInfo : ITraitInfo, IPlaceBuildingDecoration
{
public IEnumerable<IRenderable> Render(WorldRenderer wr, World w, ActorInfo ai, WPos centerPosition)
{
if (!w.LobbyInfo.GlobalSettings.Fog)
yield break;

yield return new RangeCircleRenderable(
centerPosition,
ai.Traits.Get<CreatesDisruptionFieldInfo>().Range,
0,
Color.FromArgb(128, Color.Cyan),
Color.FromArgb(96, Color.Black));

foreach (var a in w.ActorsWithTrait<RenderDisruptionCircle>())
if (a.Actor.Owner == a.Actor.World.LocalPlayer)
foreach (var r in a.Trait.RenderAfterWorld(wr))
yield return r;
}

public object Create(ActorInitializer init) { return new RenderDisruptionCircle(init.Self); }
}

class RenderDisruptionCircle : IPostRenderSelection
{
Actor self;

public RenderDisruptionCircle(Actor self) { this.self = self; }

public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr)
{
if (self.Owner != self.World.LocalPlayer || !wr.World.LobbyInfo.GlobalSettings.Fog)
yield break;

yield return new RangeCircleRenderable(
self.CenterPosition,
self.Info.Traits.Get<CreatesDisruptionFieldInfo>().Range,
0,
Color.FromArgb(128, Color.Cyan),
Color.FromArgb(96, Color.Black));
}
}
}
5 changes: 4 additions & 1 deletion OpenRA.Mods.RA/Traits/Render/RenderShroudCircle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ class RenderShroudCircleInfo : ITraitInfo, IPlaceBuildingDecoration
{
public IEnumerable<IRenderable> Render(WorldRenderer wr, World w, ActorInfo ai, WPos centerPosition)
{
if (w.LobbyInfo.GlobalSettings.Fog && ai.Traits.Contains<CreatesDisruptionFieldInfo>())
yield break;

yield return new RangeCircleRenderable(
centerPosition,
ai.Traits.Get<CreatesShroudInfo>().Range,
Expand All @@ -45,7 +48,7 @@ class RenderShroudCircle : IPostRenderSelection

public IEnumerable<IRenderable> RenderAfterWorld(WorldRenderer wr)
{
if (self.Owner != self.World.LocalPlayer)
if (self.Owner != self.World.LocalPlayer || (self.World.LobbyInfo.GlobalSettings.Fog && self.HasTrait<CreatesDisruptionField>()))
yield break;

yield return new RangeCircleRenderable(
Expand Down
1 change: 1 addition & 0 deletions mods/ra/rules/structures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ GAP:
HasMinibib: Yes
CreatesDisruptionField:
Range: 6c0
RenderDisruptionCircle:
CreatesShroud:
Range: 6c0
RenderShroudCircle:
Expand Down
1 change: 1 addition & 0 deletions mods/ra/rules/vehicles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,7 @@ MGG:
Range: 6c0
CreatesDisruptionField:
Range: 6c0
RenderDisruptionCircle:
CreatesShroud:
Range: 6c0
RenderShroudCircle:
Expand Down

0 comments on commit a479aa8

Please sign in to comment.