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 <Actor, WDist, WDist> > GetActualInstances(Actor self, FireArmamentPower power) { if (!power.FireArmamentPowerInfo.AllowMultiple) { var actorswithpower = self.World.ActorsWithTrait <FireArmamentPower>() .Where(x => x.Actor.Owner == self.Owner && x.Trait.FireArmamentPowerInfo.OrderName.Contains(power.FireArmamentPowerInfo.OrderName)); foreach (var a in actorswithpower) { yield return(Tuple.Create(a.Actor, 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(self, power.Armaments.Where(x => !x.IsTraitDisabled).Min(a => a.Weapon.MinRange), power.Armaments.Where(x => !x.IsTraitDisabled).Max(a => a.Weapon.Range))); } yield break; }
IEnumerable<Tuple<Actor, WDist, WDist>> GetActualInstances(Actor self, FireArmamentPower power) { if (!power.FireArmamentPowerInfo.AllowMultiple) { var actorswithpower = self.World.ActorsWithTrait<FireArmamentPower>() .Where(x => x.Actor.Owner == self.Owner && x.Trait.FireArmamentPowerInfo.OrderName.Contains(power.FireArmamentPowerInfo.OrderName)); foreach (var a in actorswithpower) { yield return Tuple.Create(a.Actor, 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(self, power.Armaments.Where(x => !x.IsTraitDisabled).Min(a => a.Weapon.MinRange), power.Armaments.Where(x => !x.IsTraitDisabled).Max(a => a.Weapon.Range)); } yield break; }
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); }