void fillBox(int dxy, bool isX) { bool clear = true; int signA = Math.Abs(dxy); int sign = Math.Sign(dxy); if (signA > BOX_SIZE) { signA = BOX_SIZE * 2 + 1; sign = 1; clear = false; } if (isX) { tskProvider.pointAddSide(-sign, 0); tskProvider.pointAddSide(0, -1); } else { tskProvider.pointAddSide(0, -sign); tskProvider.pointAddSide(-1, 0); } for (int i = -BOX_SIZE; i <= BOX_SIZE; i++) { for (int j = signA; j > 0; j--) { if (isX) { if (clear) { clearChar(x - sign * (BOX_SIZE + j), y + i); } getTask(x + sign * (BOX_SIZE + 1 - j), y + i, isX, sign); } else { if (clear) { clearChar(x + i, y - sign * (BOX_SIZE + j)); } getTask(x + i, y + sign * (BOX_SIZE + 1 - j), isX, sign); } } } }