public static (TownList <Point, string>, int) UploadFromXML() { var xmlDoc = XDocument.Load(Path.Combine(Environment.CurrentDirectory, "townsMap.xml")); TownList <Point, string> ddd = new TownList <Point, string>(); var town = from xe in xmlDoc.Element("Towns").Elements("Town") select new TempXMLData() { tempName = xe.Element("Name").Value, tempPoint = xe.Element("Point").Value }; var futureTownList = town.ToList(); TownList <Point, string> newTownList = new TownList <Point, string>(); int count = 0; foreach (TempXMLData data in futureTownList) { newTownList.Add(FromStringToPoint(data.tempPoint), data.tempName); // В обход интерфейсов IEnumerable и IComparable для перебора готового объекта count++; } var resultTuple = (newTownList, count); return(resultTuple); }
public static void UnloadToXML(TownList <Point, string> townList) { var xmlDoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("Towns")); for (int i = 0; i < townList.Count; i++) { InsideDataTown <Point, string> town = townList.GetObject(i); xmlDoc.Root.Add(new XElement("Town", new XAttribute("id", i), new XElement("Name", town.Name), new XElement("Point", town.TownPoint))); } xmlDoc.Save(Path.Combine(Environment.CurrentDirectory, "townsMap.xml")); }
public void CompleteMatrixWays(Point pt1, Point pt2, string val) { TownList <Point, string> towns = Points.getObj().Towns; int indexOne = towns.GetIndex(pt1); int indexTwo = towns.GetIndex(pt2); for (int i = 0; i < countTowns; i++) { for (int j = 0; j < countTowns; j++) { if (i == indexOne && j == indexTwo) { Ways[i, j] = val; } } } }
public static void SetWay(Point pt, out string lastActionText, Canvas theCanvas) { Way map = Way.getObj(); object townName = GetTown(pt, "str"); //object townObj = GetTown(pt, "obj"); lastActionText = ""; if (map.PutRoad == true) { if (map.StartPoint is null) { map.StartPoint = new InsideDataTown <Point, string>(pt, townName.ToString()); lastActionText = "Начало маршрута " + townName; } else if (map.EndPoint is null) { map.EndPoint = new InsideDataTown <Point, string>(pt, townName.ToString()); lastActionText = "Конец маршрута " + townName; } else { SetRange(map.StartPoint.TownPoint, map.EndPoint.TownPoint, theCanvas); map.StartPoint = null; map.EndPoint = null; // Перерисовка точек Points points = Points.getObj(); TownList <Point, string> towns = points.Towns; for (int i = 0; i < towns.Count; i++) { theCanvas.Children.Add(new CustomCanvas(towns.GetObject(i).TownPoint, towns.GetObject(i).Name)); } } } else { lastActionText = "Определен город " + townName; } }
private void Upload_Map(object sender, RoutedEventArgs e) { (TownList <Point, string>, int)uploadedTowns = ProcessingData.UploadFromXML(); int countTowns = uploadedTowns.Item2; MyCanvas.Children.Clear(); Points points = Points.getObj(); points.Towns = uploadedTowns.Item1; TownList <Point, string> checkedTowns = points.Towns; for (int i = 0; i < countTowns; i++) { MyCanvas.Children.Add(new CustomCanvas(checkedTowns.GetObject(i).TownPoint, checkedTowns.GetElementName(i))); } lastAction.Text = "Загружены города"; }
// Выбор можно структурой public static object GetTown(Point pt, string stroke) { Points points = Points.getObj(); TownList <Point, string> checkedTowns = points.Towns; double tempRange, minRange = GetRangeByPoints(pt, checkedTowns.GetObject(0).TownPoint); int minTownId = 0; for (int i = 1; i < checkedTowns.Count; i++) { if (CheckCoordsPoint(pt, checkedTowns.GetObject(i).TownPoint)) { tempRange = GetRangeByPoints(pt, checkedTowns.GetObject(i).TownPoint); if (tempRange < minRange) { minRange = tempRange; minTownId = i; break; } } } if (stroke == "str") { return(checkedTowns.GetElementName(minTownId)); } else if (stroke == "obj") { return(checkedTowns.GetObject(minTownId)); } else { return(null); } }
public void AddTown(Point pt, out string nameTown) { Points points = Points.getObj(); TownList <Point, string> pointsToTownList = points.Towns; nameTown = "Unknown"; if (newTown.Text != "") { nameTown = newTown.Text; } if (pointsToTownList is null) { pointsToTownList = new TownList <Point, string>(); } pointsToTownList.Add(pt, nameTown); points.Towns = pointsToTownList; MyCanvas.Children.Add(new CustomCanvas(pt, nameTown)); lastAction.Text = "Добавлен город " + nameTown; }
public TownListEnumerator(TownList <Point, string> townList) { list = townList; }