Merge pull request #11926 from abc013/JamsRadarStances
Added diplomatic stances to JamsRadar
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user