BatchFlow.AsciiArt.ExpandConnection C# (CSharp) Метод

ExpandConnection() приватный статический Метод

private static ExpandConnection ( PositionedConnection conn, char artChars ) : bool
conn PositionedConnection
artChars char
Результат bool
        private static bool ExpandConnection(PositionedConnection conn, char[,] artChars)
        {
            Position currentPos = conn.track[conn.track.Count - 1];
            List<Position.Direction> dirs = new List<Position.Direction>();
            foreach (var direction in PositionedConnection.GetContainedDirections(conn.tailDirection))
            {
                Position newPos = currentPos + direction;
                if (newPos.IsWithin(artChars))
                {
                    Position.Direction thisDir = CharFits(artChars[newPos.x, newPos.y], direction);
                    if (thisDir != Position.Direction.None)
                    {
                        dirs.Add(direction);
                    }
                }
            }
            if (dirs.Count == 0)
            {
                throw new InvalidOperationException("Connection reaches dead end");
            }
            if (dirs.Count > 1)
            {
                throw new InvalidOperationException("Connection reaches splitting point: not allowed");
            }
            Position newPoint = currentPos + dirs[0];
            conn.track.Add(newPoint);
            conn.tailDirection = CharFits(artChars[newPoint.x, newPoint.y], dirs[0]);
            return !TailAtEnd(artChars[newPoint.x, newPoint.y]);
        }