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

@@ -79,8 +79,8 @@ namespace OpenRA.Mods.RA.Traits
else
ai = order.TargetActor.Info;
var i = ai.Traits.GetOrDefault<ITargetableInfo>();
return i != null && i.GetTargetTypes().Intersect(Info.Types).Any();
return ai.Traits.WithInterface<ITargetableInfo>()
.SelectMany(t => t.GetTargetTypes()).Intersect(Info.Types).Any();
}
public string VoicePhraseForOrder(Actor self, Order order)
@@ -95,7 +95,8 @@ namespace OpenRA.Mods.RA.Traits
return;
var target = self.ResolveFrozenActorOrder(order, Color.Red);
if (target.Type != TargetType.Actor)
if (target.Type != TargetType.Actor
|| target.Actor.TraitsImplementing<ITargetable>().SelectMany(t => t.TargetTypes).Intersect(Info.Types).Any())
return;
if (!order.Queued)