private static PositionedConnection FindConnectionEnd(PositionedTask task, char[,] artChars)
{
List<PositionedConnection> pointers = new List<PositionedConnection>();
ExtractConnectionEndFor(task.pos, artChars, Position.Direction.North, 'V', pointers);
ExtractConnectionEndFor(task.pos, artChars, Position.Direction.South, '^', pointers);
ExtractConnectionEndFor(task.pos, artChars, Position.Direction.West, '>', pointers);
ExtractConnectionEndFor(task.pos, artChars, Position.Direction.East, '<', pointers);
if (pointers.Count == 0)
{
return null;
}
else if (pointers.Count == 1)
{
pointers[0].endPoint = task;
return pointers[0];
}
throw new InvalidOperationException(String.Format("Multiple pointers seem to end at task '{0}'.(position {1}) This is illegal. Use the Join (#) to merge two streams.", task.task.Name, artChars[task.pos.x, task.pos.y]));
}