From ef761abd94a38cdb9c7fe2e0f3fbb1be156f4e3e Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Tue, 30 Mar 2010 18:26:35 +1300 Subject: [PATCH] don't render enemy units under fog --- OpenRA.Game/Traits/Render/RenderUnit.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Traits/Render/RenderUnit.cs b/OpenRA.Game/Traits/Render/RenderUnit.cs index c766d0af8a..b40a615fbf 100644 --- a/OpenRA.Game/Traits/Render/RenderUnit.cs +++ b/OpenRA.Game/Traits/Render/RenderUnit.cs @@ -20,6 +20,8 @@ using System; using OpenRA.Graphics; +using System.Collections.Generic; +using OpenRA.FileFormats; namespace OpenRA.Traits { @@ -28,14 +30,17 @@ namespace OpenRA.Traits public override object Create(Actor self) { return new RenderUnit(self); } } - class RenderUnit : RenderSimple, INotifyDamage + class RenderUnit : RenderSimple, INotifyDamage, IRenderModifier { + Shroud shroud; + public RenderUnit(Actor self) : base(self, () => self.traits.Get().Facing) { anim.Play("idle"); - anims.Add( "smoke", new AnimationWithOffset( new Animation( "smoke_m" ), null, () => !isSmoking ) ); + + shroud = self.World.WorldActor.traits.Get(); } public void PlayCustomAnimation(Actor self, string newAnim, Action after) @@ -57,5 +62,14 @@ namespace OpenRA.Traits () => smoke.PlayBackwardsThen( "end", () => isSmoking = false ) ) ); } + + public IEnumerable ModifyRender(Actor self, IEnumerable r) + { + if (self.Owner == self.World.LocalPlayer || + shroud.visibleCells[self.Location.X, self.Location.Y] > 0) + return r; + + return new Renderable[] { }; + } } }