private List <IShipPart> getDamageableParts() { return(new List <IShipPart>() .Concat(Reactors.Where(x => !x.IsDestroyed())) .Concat(Engines.Where(x => !x.IsDestroyed())) .Concat(Shields.Where(x => !x.IsDestroyed())) .Concat(Weapons.Where(x => !x.IsDestroyed())) .Concat(CrewDecks.Where(x => !x.IsDestroyed())).ToList()); }
/// <summary> /// repairs some part that is damaged. /// </summary> /// <param name="crewDeck">Use this crewdeck's repair rate.</param> private void repairARandomPartThatNeedsIt(CrewDeck crewDeck) { List <IShipPart> damagedParts = new List <IShipPart>(); damagedParts.AddRange(Reactors.Where(x => x.Health.Item1 < x.Health.Item2)); damagedParts.AddRange(Engines.Where(x => x.Health.Item1 < x.Health.Item2)); damagedParts.AddRange(Weapons.Where(x => x.Health.Item1 < x.Health.Item2)); damagedParts.AddRange(Shields.Where(x => x.Health.Item1 < x.Health.Item2)); damagedParts.AddRange(CrewDecks.Where(x => x.Health.Item1 < x.Health.Item2)); if (damagedParts.Count() == 0) { return; } crewDeck.PerformRepair(damagedParts[GameEngine.Random(damagedParts.Count)]); }