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; }