Add Creates/RevealsShroudMultiplier.
This commit is contained in:
committed by
abcdefg30
parent
4987d45f23
commit
becfc154c5
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user