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"));
        }
Пример #3
0
        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;
            }
        }
Пример #5
0
        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);
            }
        }
Пример #7
0
        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;
        }
Пример #8
0
 public TownListEnumerator(TownList <Point, string> townList)
 {
     list = townList;
 }