Add TargetableOffsets to HitShape

And remove ITargetablePositions from Building.
Also, added UseFootprintOffsets to replicate the old Building behavior for easier setup of TargetablePositions for buildings.
This commit is contained in:
reaperrr
2017-05-23 22:51:04 +02:00
parent 7fd0a3aa58
commit 82758a8bef
9 changed files with 63 additions and 19 deletions

View File

@@ -145,12 +145,11 @@ namespace OpenRA.Traits
if (!actor.Targetables.Any(Exts.IsTraitEnabled))
return new[] { actor.CenterPosition };
var targetablePositions = actor.TraitOrDefault<ITargetablePositions>();
if (targetablePositions != null)
var targetablePositions = actor.TraitsImplementing<ITargetablePositions>().Where(Exts.IsTraitEnabled);
if (targetablePositions.Any())
{
var positions = targetablePositions.TargetablePositions(actor);
if (positions.Any())
return positions;
var target = this;
return targetablePositions.SelectMany(tp => tp.TargetablePositions(target.actor));
}
return new[] { actor.CenterPosition };