/// <summary> /// Find a nearby substation /// </summary> /// <returns></returns> public Sim_Substation FindNearbySubstation(List <Sim_Substation> Substations, double Distance, List <Sim_Line> Lines, Sim_Builder Builder) { Dictionary <Sim_Substation, Sim_Line> AlreadySubs = ConnectedSubstations(Lines); List <SubstationDistance> Distances = new List <SubstationDistance>(); foreach (Sim_Substation Sub in Substations) { if (Sub != this && !AlreadySubs.ContainsKey(Sub)) { double Dist = Sub.DistanceTo(this); if (Dist <= Distance) { Distances.Add(new SubstationDistance(Sub, Dist)); } } } Distances.Sort(); if (Distances.Count == 0) { return(null); } else { return(Distances[Builder.Randomizer.Next(Distances.Count)].Sub); } }