Add Creates/RevealsShroudMultiplier.

This commit is contained in:
Mustafa Alperen Seki
2018-10-14 18:58:24 +03:00
committed by abcdefg30
parent 4987d45f23
commit becfc154c5
7 changed files with 134 additions and 6 deletions

View File

@@ -9,6 +9,8 @@
*/
#endregion
using System.Collections.Generic;
using System.Linq;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
@@ -24,9 +26,20 @@ namespace OpenRA.Mods.Common.Traits
public class CreatesShroud : AffectsShroud
{
readonly CreatesShroudInfo info;
ICreatesShroudModifier[] rangeModifiers;
public CreatesShroud(Actor self, CreatesShroudInfo info)
: base(self, info) { this.info = info; }
: base(self, info)
{
this.info = info;
}
protected override void Created(Actor self)
{
base.Created(self);
rangeModifiers = self.TraitsImplementing<ICreatesShroudModifier>().ToArray();
}
protected override void AddCellsToPlayerShroud(Actor self, Player p, PPos[] uv)
{
@@ -37,5 +50,18 @@ namespace OpenRA.Mods.Common.Traits
}
protected override void RemoveCellsFromPlayerShroud(Actor self, Player p) { p.Shroud.RemoveSource(this); }
public override WDist Range
{
get
{
if (CachedTraitDisabled)
return WDist.Zero;
var revealsShroudModifier = rangeModifiers.Select(x => x.GetCreatesShroudModifier());
var range = Util.ApplyPercentageModifiers(Info.Range.Length, revealsShroudModifier);
return new WDist(range);
}
}
}
}