Ejemplo n.º 1
0
 // вспомогательный метод, расчет пути по предполагаемому расположению персонажа
 // и отображение минут, которых потребуется на этот переход
 private void CalculationPathForCurrentCell()
 {
     subClickNet.X = lastClickNetWithoutOffset.X;
     subClickNet.Y = lastClickNetWithoutOffset.Y;
     way = GameControl.FindPath(net.CellsOfNet, lastClickNet, subClickNet, beginRenderNet, scale);
     if (way?.Count > 1)
     {
         distance = WorkWithTime.SubTotalTimeCountingForWay(way, DateTime.Parse(Time.Text), beginRenderNet, net, dayTimeTick);
         TravelTime.Text = distance.ToString();
     }
     else
     {
         TravelTime.Text = "0";
         distance = 0;
     }
     AllRender();
 }
Ejemplo n.º 2
0
        // двойной клик на клетку, расчет времени и отображение персонажа в новой позиции
        private void Scene_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            int mouseArgX = e.X;
            int mouseArgY = Scene.Height - e.Y; // инвертирование значения ординаты курсора
            var currentClickNet = GameRendering.GraphPointToAlgorithmPoint(mouseArgX, mouseArgY);

            lastClickNetWithoutOffset.X = currentClickNet.X;
            lastClickNetWithoutOffset.Y = currentClickNet.Y;
            
            currentClickNet.X += beginRenderNet.X;
            currentClickNet.Y += beginRenderNet.Y;

            if (net.IsFree(currentClickNet))
            {
                subClickNet.X = lastClickNetWithoutOffset.X;
                subClickNet.Y = lastClickNetWithoutOffset.Y;
                way = GameControl.FindPath(net.CellsOfNet, lastClickNet, subClickNet, beginRenderNet, scale);
                if (way?.Count > 1)
                    distance = WorkWithTime.SubTotalTimeCountingForWay(way, DateTime.Parse(Time.Text), beginRenderNet, net, dayTimeTick);
                MoveCharacterAndRecountingPath(currentClickNet);

                flagForFirstDrawing = true;
            }
        }