Example #1
0
	GLint CBlock::getEdgeSubtiles(GLint subtiles[])
	{		
		/*
			_____________
			|0	|1	|2	| ly2
			|___|___|___|
			|3	|4	|5	| ly1
			|___|___|___|
			|6	|7	|8	| ly0
			|___|___|___|
			lx0 lx1 lx2
		*/

		GLint arrayPos=0;

		CLevelManager *lManager = CV_GAME_MANAGER->getLevelManager();

		GLint mapX = logicalPosition[0];
		GLint mapY = logicalPosition[1];

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX-1,mapY,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX,mapY-1,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX-1,mapY-1,this))
		{
			subtiles[arrayPos++]=0;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX,mapY-1,this))
		{
			subtiles[arrayPos++]=1;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX+1,mapY,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX,mapY-1,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX+1,mapY-1,this))
		{
			subtiles[arrayPos++]=2;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX-1,mapY,this))
		{
			subtiles[arrayPos++]=3;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX+1,mapY,this))
		{
			subtiles[arrayPos++]=5;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX-1,mapY,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX,mapY+1,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX-1,mapY+1,this))
		{
			subtiles[arrayPos++]=6;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX,mapY+1,this))
		{
			subtiles[arrayPos++]=7;
		}

		if (lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX+1,mapY,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX,mapY+1,this) ||
			lManager->isNotSameTypeAndOwnerAndNotRockOrEarth(mapX+1,mapY+1,this))
		{
			subtiles[arrayPos++]=8;
		}

		return arrayPos;
	}