public SelectArmamentPowerTarget(Actor self, string order, SupportPowerManager manager, FireArmamentPower power) { // Clear selection if using Left-Click Orders if (Game.Settings.Game.UseClassicMouseStyle) { manager.Self.World.Selection.Clear(); } this.self = self; this.manager = manager; this.order = order; this.power = power; instances = GetActualInstances(self, power); }
IEnumerable <Tuple <FireArmamentPower, WDist, WDist> > GetActualInstances(Actor self, FireArmamentPower power) { if (!power.Info.AllowMultiple) { var actorswithpower = self.World.ActorsWithTrait <FireArmamentPower>() .Where(x => x.Actor.Owner == self.Owner && x.Trait.FireArmamentPowerInfo.OrderName.Contains(power.FireArmamentPowerInfo.OrderName) && x.Trait.IsActive(x.Actor)); foreach (var a in actorswithpower) { yield return(Tuple.Create(a.Trait, a.Trait.Armaments.Where(x => !x.IsTraitDisabled).Min(x => x.Weapon.MinRange), a.Trait.Armaments.Where(x => !x.IsTraitDisabled).Max(x => x.Weapon.Range))); } } else { yield return(Tuple.Create(power, power.Armaments.Where(x => !x.IsTraitDisabled).Min(a => a.Weapon.MinRange), power.Armaments.Where(x => !x.IsTraitDisabled).Max(a => a.Weapon.Range))); } yield break; }