Support multiple ITargetable traits

This commit is contained in:
atlimit8
2015-07-13 15:22:39 -05:00
parent 4bd34e3ed3
commit f5c3575c5a
13 changed files with 39 additions and 38 deletions

View File

@@ -125,14 +125,11 @@ namespace OpenRA.Mods.Common.AI
if (a == null)
return 0;
var targetable = a.TraitOrDefault<ITargetable>();
if (targetable == null)
var targetable = a.TraitsImplementing<ITargetable>().Where(Exts.IsTraitEnabled);
if (!targetable.Any(t => t.TargetableBy(a, firedBy.PlayerActor)))
return 0;
if (!targetable.TargetableBy(a, firedBy.PlayerActor))
return 0;
if (Types.Intersect(targetable.TargetTypes).Any())
if (Types.Intersect(targetable.SelectMany(t => t.TargetTypes)).Any())
{
switch (TargetMetric)
{