Exemplo n.º 1
0
        /// <summary>
        /// Поворачивает направление на угол между двумя другими направлениями.
        /// </summary>
        public static MoveDirection RotateDirection(this MoveDirection source, MoveDirection dir1, MoveDirection dir2)
        {
            var directions = GetDirectionsArray();
            int angle      = dir1.CalculateAngle(dir2) / 45;

            if (angle < 0)
            {
                angle = directions.Length + angle;
            }
            if (angle > directions.Length)
            {
                angle %= directions.Length;
            }

            int curr = 0;

            for (int i = 0; i < directions.Length; i++)
            {
                if (directions[i] == source)
                {
                    curr = i;
                    break;
                }
            }

            curr += angle;
            if (curr > directions.Length)
            {
                curr %= directions.Length;
            }
            return(directions[curr]);
        }