Esempio n. 1
0
        public override int Search(int x, int y, out double dist, DrawLevel dl)
        {
            int index = -1;

            dist = -1;
            dist = Int32.MaxValue;
            for (int i = 0; i < Rectangles.Count; i++)
            {
                if (dl == Rectangles[i].DL & !Rectangles[i].delete)
                {
                    double _dist = Rectangles[i].Search(x, y);
                    if (dist == -1 & _dist != -1)
                    {
                        dist  = _dist;
                        index = i;
                    }
                    else if (_dist < dist & _dist != -1)
                    {
                        dist  = _dist;
                        index = i;
                    }
                }
            }
            return(index);
        }
Esempio n. 2
0
        public override int Search(int x, int y, out double dist, DrawLevel dl)
        {
            int index = -1;

            dist = -1;
            dist = Int32.MaxValue;
            for (int i = 0; i < Buildings.Count; i++)
            {
                if (dl == Buildings[i].MainMapDL & !Buildings[i].delete)
                {
                    double _dist = Buildings[i].CalcPointInBuild(x, y);
                    if (dist == -1 & _dist != -1)
                    {
                        dist  = _dist;
                        index = i;
                    }
                    else if (_dist < dist & _dist != -1)
                    {
                        dist  = _dist;
                        index = i;
                    }
                }
            }
            return(index);
        }
Esempio n. 3
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="_drawLevel">Уровень отображения</param>
 public Line(int x, int y, DrawLevel _drawLevel)
 {
     Points.Add(new Point(x, y));
     Points.Add(new Point(x, y));
     DL     = _drawLevel;
     delete = false;
 }
Esempio n. 4
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="_radius">Радиус</param>
 /// <param name="_DL">Уровень отображения</param>
 public Circle(int x, int y, int _radius, DrawLevel _DL)
 {
     MainCenterPoint = new Point(x, y);
     radius          = _radius;
     MainDL          = _DL;
     delete          = false;
 }
Esempio n. 5
0
        public override int Search(int x, int y, DrawLevel dl)
        {
            int    _i     = -1;
            double _count = Double.MaxValue;

            for (int i = 0; i < Lines.Count; i++)
            {
                if (dl == Lines[i].DL & !Lines[i].delete)
                {
                    double count = Lines[i].Search(x, y);
                    if (count < _count & count != -1)
                    {
                        _count = count;
                        _i     = i;
                    }
                }
            }
            if (_i != -1)
            {
                return(_i);
            }
            else
            {
                return(-1);
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="_MDL">Основной уровень отображения</param>
 /// <param name="_LDL">Локальный уровень отображения</param>
 public Circle(int x, int y, DrawLevel _MDL, DrawLevel _LDL)
 {
     MainCenterPoint = new Point(x, y);
     radius          = 1;
     MainDL          = _MDL;
     LocalDL         = _LDL;
     delete          = false;
 }
Esempio n. 7
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="texture">Текстура</param>
 /// <param name="dL">Уровень отображения</param>
 public NetworkElement(Texture texture, DrawLevel dL, int type)
 {
     this.type    = type;
     groupname    = MainForm.groups.GroupsOfNE[type].name;
     delete       = false;
     this.texture = texture;
     DL           = dL;
 }
Esempio n. 8
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// /// <param name="_radius">Радиус</param>
 /// <param name="_MDL">Основной уровень отображения</param>
 /// <param name="_LDL">Локальный уровень отображения</param>
 /// <param name="side">Показывает, сбоку или нет находится точка</param>
 public Circle(int x, int y, int _radius, DrawLevel _MDL, DrawLevel _LDL, bool side)
 {
     MainCenterPoint = new Point(x, y);
     radius          = _radius;
     MainDL          = _MDL;
     LocalDL         = _LDL;
     delete          = false;
     this.side       = side;
 }
Esempio n. 9
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="_drawLevel">Уровень отображения</param>
 public Polygon(int x, int y, DrawLevel _drawLevel)
 {
     TempPoint.X = x;
     TempPoint.Y = y;
     Points.Add(TempPoint);
     ClearTempPoint();
     DL     = _drawLevel;
     delete = false;
 }
Esempio n. 10
0
 /// <summary>
 /// Добавление входа провода внутри здания
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="dl">Уровень отображения</param>
 /// <returns></returns>
 public bool AddIWInBuild(int x, int y, DrawLevel dl)
 {
     if (!InputWires.step)
     {
         InputWires.step = true;
         InputWires.AddTemp(x, y, dl, new DrawLevel(dl.Level, dl.Floor - 1));
         return(false);
     }
     else
     {
         InputWires.step = false;
         InputWires.AddInBuild();
         return(true);
     }
 }
Esempio n. 11
0
        /// <summary>
        /// Поиск входа в здание
        /// </summary>
        /// <param name="x">Координата Х</param>
        /// <param name="y">Координата У</param>
        /// <param name="dl">Уровень отображения</param>
        /// <returns>Возвращает идентификатор ближайшего входа в здание</returns>
        public int SearchEnt(int x, int y, DrawLevel dl)
        {
            int    index = -1;
            double dist  = Int32.MaxValue;

            for (int i = 0; i < Circles.Count; i++)
            {
                //Внутри
                if (dl.Level != -1)
                {
                    if (dl == Circles[i].LocalDL & !Circles[i].delete)
                    {
                        double _dist = Circles[i].SearchEntInBuild(x, y);
                        if (dist == -1 & _dist != -1)
                        {
                            dist  = _dist;
                            index = i;
                        }
                        else if (_dist < dist & _dist != -1)
                        {
                            dist  = _dist;
                            index = i;
                        }
                    }
                }
                //Снаружи
                else
                {
                    if (dl == Circles[i].MainDL & !Circles[i].delete)
                    {
                        double _dist = Circles[i].SearchEnt(x, y);
                        if (dist == -1 & _dist != -1)
                        {
                            dist  = _dist;
                            index = i;
                        }
                        else if (_dist < dist & _dist != -1)
                        {
                            dist  = _dist;
                            index = i;
                        }
                    }
                }
            }
            return(index);
        }
Esempio n. 12
0
 /// <summary>
 /// Поиск входа провода внутри здания
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="dl">Уровень отображения</param>
 /// <returns>Возвращает расстояние до точки</returns>
 public double SearchIWInBuild(int x, int y, DrawLevel dl)
 {
     if (dl == LocalDL)
     {
         if (Math.Pow((x - (double)LocalCenterPoint.X * MainForm.zoom), 2) + Math.Pow((y - (double)LocalCenterPoint.Y * MainForm.zoom), 2) <= Math.Pow((double)MainForm.colorSettings.InputWireRadius * MainForm.zoom, 2))
         {
             return(Math.Abs((double)LocalCenterPoint.X * MainForm.zoom - x + (double)LocalCenterPoint.Y * MainForm.zoom - y));
         }
     }
     else if (dl == MainDL)
     {
         if (Math.Pow((x - (double)MainCenterPoint.X * MainForm.zoom), 2) + Math.Pow((y - (double)MainCenterPoint.Y * MainForm.zoom), 2) <= Math.Pow((double)MainForm.colorSettings.InputWireRadius * MainForm.zoom, 2))
         {
             return(Math.Abs((double)MainCenterPoint.X * MainForm.zoom - x + (double)MainCenterPoint.Y * MainForm.zoom - y));
         }
     }
     return(-1);
 }
Esempio n. 13
0
 /// <summary>
 /// Поиск ближайшего входа
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="dl">Уровень отображения</param>
 /// <returns></returns>
 public int CalcNearestEnterise(int x, int y, DrawLevel dl)
 {
     return(Enterances.SearchEnt(x, y, dl));
 }
Esempio n. 14
0
 /// <summary>
 /// Добавление временного элемента
 /// </summary>
 /// <param name="x">Координата мыши X</param>
 /// <param name="y">Координата мыши Y</param>
 /// <param name="MDL">Уровень отображения</param>
 /// <param name="LDL">Уровень отображения</param>
 public void AddTemp(int x, int y, DrawLevel MDL, DrawLevel LDL)
 {
     InputWires.TempCircle = new Circle(x, y, rad, MDL, LDL, side);
 }
Esempio n. 15
0
 /// <summary>
 /// Поиск ближайшего элемента к заданным координатам, находящимся на этом же уровне отображения
 /// </summary>
 /// <param name="x">Координата X</param>
 /// <param name="y">Координата Y</param>
 /// <param name="dist">Возвращаемый параметр расстояние до элемента</param>
 /// <param name="dl">Уровень отображения</param>
 /// <returns>Возвращает индекс элемента</returns>
 public abstract int Search(int x, int y, out double dist, DrawLevel dl);
Esempio n. 16
0
 /// <summary>
 /// Поиск ближайшего элемента к заданным координатам, находящимся на этом же уровне отображения
 /// </summary>
 /// <param name="x">Координата X</param>
 /// <param name="y">Координата Y</param>
 /// <param name="dl">Уровень отображения</param>
 /// <returns>Возвращает индекс элемента</returns>
 public abstract int Search(int x, int y, DrawLevel dl);
Esempio n. 17
0
 public override int Search(int x, int y, DrawLevel dl)
 {
     throw new NotImplementedException();
 }
Esempio n. 18
0
 /// <summary>
 /// Поиск ближайшего входа провода в здание
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="dl">Уровень отображения</param>
 /// <returns></returns>
 public int CalcNearestIW(int x, int y, DrawLevel dl)
 {
     return(InputWires.SearchIW(x, y, dl));
 }
Esempio n. 19
0
 /// <summary>
 /// Добавление временной точки
 /// </summary>
 /// <param name="x">Координата Х</param>
 /// <param name="y">Координата У</param>
 /// <param name="MDL">Гланвый уровень отображения</param>
 /// <param name="LDL">Локальный уровень отображения</param>
 public void AddTemp(int x, int y, DrawLevel MDL, DrawLevel LDL)
 {
     Enterances.TempCircle = new Circle(x, y, rad, MDL, LDL);
 }