diff --git a/OpenRA.Mods.RA/TargetableBuilding.cs b/OpenRA.Mods.RA/TargetableBuilding.cs index e02e9ff7c3..8bc331338c 100755 --- a/OpenRA.Mods.RA/TargetableBuilding.cs +++ b/OpenRA.Mods.RA/TargetableBuilding.cs @@ -15,25 +15,30 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { - class TargetableBuildingInfo : ITraitInfo, Requires + public class TargetableBuildingInfo : ITraitInfo, Requires { public readonly string[] TargetTypes = { }; - public object Create( ActorInitializer init ) { return new TargetableBuilding( this ); } + public object Create(ActorInitializer init) { return new TargetableBuilding(init.self, this); } } - class TargetableBuilding : ITargetable + public class TargetableBuilding : ITargetable { readonly TargetableBuildingInfo info; + readonly Building building; - public TargetableBuilding( TargetableBuildingInfo info ) { this.info = info; } + public TargetableBuilding(Actor self, TargetableBuildingInfo info) + { + this.info = info; + building = self.Trait(); + } public string[] TargetTypes { get { return info.TargetTypes; } } public bool TargetableBy(Actor self, Actor byActor) { return true; } public IEnumerable TargetablePositions(Actor self) { - return self.Trait().OccupiedCells().Select(c => c.First.CenterPosition); + return building.OccupiedCells().Select(c => c.First.CenterPosition); } } }