public override void BuildWayB(ref Point b) { if (b.coef_comm.Count() <= 2) //если В - линейный участок { if (!wayB.Contains(b)) //и если нет В в списке нелинейного пути вблизи В { wayB.Add(b); //то добавляем в этот список } b = PointCommunications.NextPointByWay(b, wayB); //и идем к следующей точке от В и переопределяем ее } }
public override void BuildWayB(ref Point b) { if (b.coef_comm.Count() <= 2) //если В - линейный участок { //wayB.Add(b); if (!wayB.Contains(b)) //и если нет В в списке нелинейного пути вблизи В { if (wayA.Count == 0 || wayB.Count == 0) { wayB.Add(b); //то добавляем в этот список b = PointCommunications.NextPointByWay(b, wayB); } else if (wayB.First() != wayA.Last()) { wayB.Add(b); List <Point> buff = new List <Point>(); foreach (Point o in wayB) { buff.Add(o); } b = wayB.First(); buff.Remove(wayB.First()); wayB.Clear(); wayB.Add(b); } else { wayB.Add(b); //то добавляем в этот список b = PointCommunications.NextPointByWay(b, wayB); } } else if (wayB.Count != 0 && b.coef_comm.Count() == 1) { wayB.Add(b); List <Point> buff = new List <Point>(); foreach (Point o in wayB) { buff.Add(o); } b = wayB.First(); buff.Remove(wayB.First()); wayB.Clear(); wayB.Add(b); b = PointCommunications.NextPointByWay(b, buff); //берем другую точку, которая в другой стороне и не содержится в wayB } //и идем к следующей точке от В и переопределяем ее } }
PointCommunications PC = new PointCommunications(); //после редактирования удалить и сделать этот класс статическим public override bool BuildWayA(ref Point a) { if (!wayA.Contains(a) && (a.coef_comm.Count() <= 2)) { wayA.Add(a); //то уже идем от точки А, добавляя ее в коллекцию вблизи А a = PointCommunications.NextPointByWay(a, wayA); //и берем следующую точку по пути от А и переопределяем ее return(true); } else { return(false); } }
PointCommunications PC = new PointCommunications(); //после редактирования удалить и сделать этот класс статическим public override bool BuildWayA(ref Point a) { if (!wayA.Contains(a) && (a.coef_comm.Count() <= 2)) { if (wayA.Count == 0 || wayB.Count == 0) { wayA.Add(a); //то уже идем от точки А, добавляя ее в коллекцию вблизи А a = PointCommunications.NextPointByWay(a, wayA); //и берем следующую точку по пути от А и переопределяем ее return(true); } else if (wayA.First() != wayB.Last()) { wayA.Add(a); List <Point> buff = new List <Point>(); foreach (Point o in wayA) { buff.Add(o); } a = wayA.First(); buff.Remove(wayA.First()); wayA.Clear(); wayA.Add(a); } else { wayA.Add(a); //то добавляем в этот список a = PointCommunications.NextPointByWay(a, wayA); return(true); } return(true); } else { return(false); } }