Support multiple ITargetable traits
This commit is contained in:
@@ -35,8 +35,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
get
|
||||
{
|
||||
return IsTraitDisabled ? None
|
||||
: (self.CenterPosition.Z > 0 ? info.TargetTypes : info.GroundedTargetTypes);
|
||||
return (self.CenterPosition.Z > 0) ? info.TargetTypes : info.GroundedTargetTypes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,8 +57,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (info.ValidFactions.Any() && !info.ValidFactions.Contains(collector.Owner.Faction.InternalName))
|
||||
return false;
|
||||
|
||||
var targetable = collector.Info.Traits.GetOrDefault<ITargetableInfo>();
|
||||
if (targetable == null || !info.ValidTargets.Intersect(targetable.GetTargetTypes()).Any())
|
||||
var targetable = collector.TraitsImplementing<ITargetable>();
|
||||
if (!info.ValidTargets.Intersect(targetable.SelectMany(t => t.TargetTypes)).Any())
|
||||
return false;
|
||||
|
||||
var positionable = collector.TraitOrDefault<IPositionable>();
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return cloak.IsVisible(self, viewer.Owner);
|
||||
}
|
||||
|
||||
public virtual string[] TargetTypes { get { return IsTraitDisabled ? None : Info.TargetTypes; } }
|
||||
public virtual string[] TargetTypes { get { return Info.TargetTypes; } }
|
||||
|
||||
public virtual IEnumerable<WPos> TargetablePositions(Actor self)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user