Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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]);
    }
}
Exemplo n.º 3
0
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);
		}
	}
}