Merge pull request #11926 from abc013/JamsRadarStances

Added diplomatic stances to JamsRadar
This commit is contained in:
Oliver Brakmann
2016-09-20 19:24:57 +02:00
committed by GitHub
2 changed files with 17 additions and 5 deletions

View File

@@ -14,11 +14,24 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits.Radar
{
[Desc("When an actor with this trait is in range of an actor with ProvidesRadar, it will temporarily disable the radar minimap for the enemy player.")]
public class JamsRadarInfo : TraitInfo<JamsRadar>
public class JamsRadarInfo : ITraitInfo
{
[Desc("Range for jamming.")]
public readonly WDist Range = WDist.Zero;
[Desc("Which diplomatic stances are affected.")]
public readonly Stance Stances = Stance.Enemy | Stance.Neutral;
public object Create(ActorInitializer init) { return new JamsRadar(this); }
}
public class JamsRadar { }
public class JamsRadar
{
public readonly JamsRadarInfo Info;
public JamsRadar(JamsRadarInfo info)
{
Info = info;
}
}
}

View File

@@ -28,9 +28,8 @@ namespace OpenRA.Mods.Common.Traits.Radar
// Check if powered
if (self.IsDisabled()) return false;
return self.World.ActorsWithTrait<JamsRadar>().All(a => a.Actor.Owner.Stances[self.Owner] == Stance.Ally
|| (self.CenterPosition - a.Actor.CenterPosition).HorizontalLengthSquared
> a.Actor.Info.TraitInfo<JamsRadarInfo>().Range.LengthSquared);
return self.World.ActorsWithTrait<JamsRadar>().All(a => !a.Trait.Info.Stances.HasStance(a.Actor.Owner.Stances[self.Owner])
|| (self.CenterPosition - a.Actor.CenterPosition).HorizontalLengthSquared > a.Trait.Info.Range.LengthSquared);
}
}
}