void AGameplayPawn::DestroyLine(int x1, int y1, int x2, int y2, int l) { int xl = l; if (x1 > x2) xl = -xl; if (y1 < y2) xl = -xl; int maxX = Max(x1, x2) + l; int maxY = Max(y1, y2) + l; int minX = Min(x1, x2) - l; int minY = Min(y1, y2) - l; if (x1 == x2) x1++; float K = ((y2 - y1) / (float)(x2 - x1)); for (int i = minX; i <= maxX; i++) { int minLine = (int)(y1 + K * (i - x1 + xl)) - l; int maxLine = (int)(y1 + K * (i - x1 - xl)) + l; for (int j = Max(minY, minLine); j <= Min(maxY, maxLine); j++) { if (i >= 0 && i < width && j >= 0 && j < height) RemoveAtIndex(i, j); } } l++; UpdateLine(x1, y1, x2, y2, l); }
void NDKHelper::RemoveSelectorsInGroup(char *groupName) { std::vector<int> markedIndices; for (unsigned int i = 0; i < selectorList.size(); ++i) { if (selectorList[i].getGroup().compare(groupName) == 0) { markedIndices.push_back(i); } } for (unsigned int i = 0; i < markedIndices.size(); ++i) { RemoveAtIndex(markedIndices[i]); } }
void AGameplayPawn::DestroySquare(int nx, int ny, int nr) { for (int i = nx - nr; i <= nx + nr; i++) { for (int j = ny - nr; j <= ny + nr; j++) { if (i >= 0 && i < width && j >= 0 && j < height) if (grid[i][j] != UD_TERRAIN) RemoveAtIndex(i, j); } } nr++; for (int i = nx - nr; i <= nx + nr; i++) { for (int j = ny - nr; j <= ny + nr; j++) { if (i >= 0 && i < width && j >= 0 && j < height) UpdatePos(i, j); } } }