Implement DetectCloakedMultiplier.

This commit is contained in:
Mustafa Alperen Seki
2019-06-17 23:31:15 +03:00
committed by reaperrr
parent d36973138c
commit 3e39ada304
5 changed files with 63 additions and 5 deletions

View File

@@ -9,7 +9,9 @@
*/
#endregion
using System.Linq;
using OpenRA.Primitives;
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
@@ -24,9 +26,29 @@ namespace OpenRA.Mods.Common.Traits
public override object Create(ActorInitializer init) { return new DetectCloaked(this); }
}
public class DetectCloaked : ConditionalTrait<DetectCloakedInfo>
public class DetectCloaked : ConditionalTrait<DetectCloakedInfo>, INotifyCreated
{
IDetectCloakedModifier[] rangeModifiers;
public DetectCloaked(DetectCloakedInfo info)
: base(info) { }
void INotifyCreated.Created(Actor self)
{
rangeModifiers = self.TraitsImplementing<IDetectCloakedModifier>().ToArray();
}
public WDist Range
{
get
{
if (IsTraitDisabled)
return WDist.Zero;
var detectCloakedModifier = rangeModifiers.Select(x => x.GetDetectCloakedModifier());
var range = Util.ApplyPercentageModifiers(Info.Range.Length, detectCloakedModifier);
return new WDist(range);
}
}
}
}