예제 #1
0
 /// <summary>
 /// Метод обрабатывает нажатие точки
 /// </summary>
 /// <param name="point"> Точка , которую нажал игрок</param>
 public void PointEnter(PointController point)
 {
     path.clearRoad(pointClr, currentClr, keyPointClr, blockPointClr);
     if (point != path.startPoint && !point.IsBlockPoint)
     {
         if (point.IsKeyPoint && path.nextKeyPoint == point)
         {
             // point - ключевая точка
             path.searchRoad(path.startPoint.num, point.num);
             if (ui.OpenCloseUi(point, path.GetDistance(point.num), path.GetNextCity()))
             {
                 path.drawRoad(roadClr);
             }
         }
         else
         {
             path.searchRoad(path.startPoint.num, point.num);
             foreach (int p in path.road)
             {
                 //Если на маршруте есть заблокированная точка
                 if (path.mapsObj[p].IsBlockPoint)
                 {
                     if (ui.uiActive)
                     {
                         ui.OpenCloseUi(point, path.GetDistance(point.num), path.GetNextCity());
                     }
                     return;
                 }
             }
             if (!path.road.Contains(path.nextKeyPoint.num))
             {
                 if (point.IsOpenPoint)
                 {
                     //point - открытая точка для перемещения
                     path.searchRoad(path.startPoint.num, point.num);
                     if (ui.OpenCloseUi(point, path.GetDistance(point.num), path.GetNextCity()))
                     {
                         path.drawRoad(roadClr);
                     }
                 }
                 else
                 {
                     //point закрытая точка для перемещния
                     //строим дорогу от стартовой до ключевой
                     //через закрытую точку
                     if (path.searchRoadKey(path.startPoint.num, path.nextKeyPoint.num, point.num))
                     {
                         if (ui.OpenCloseUi(point, path.GetDistance(point.num), path.GetNextCity()))
                         {
                             path.drawRoad(roadClr);
                         }
                     }
                 }
             }
         }
     }
     else
     {
         if (ui.uiActive)
         {
             ui.OpenCloseUi(point, path.GetDistance(point.num), path.GetNextCity());
         }
     }
 }