| 159 | } |
| 160 | |
| 161 | Tile* Building::getCentralTile() |
| 162 | { |
| 163 | if (mCoveredTiles.empty() && mCoveredTilesDestroyed.empty()) |
| 164 | return nullptr; |
| 165 | |
| 166 | std::vector<Tile*> allTiles; |
| 167 | allTiles.insert(allTiles.end(), mCoveredTiles.begin(), mCoveredTiles.end()); |
| 168 | |
| 169 | // In editor mode, we do not consider destroyed tiles while computing the central tile |
| 170 | if(!getGameMap()->isInEditorMode()) |
| 171 | allTiles.insert(allTiles.end(), mCoveredTilesDestroyed.begin(), mCoveredTilesDestroyed.end()); |
| 172 | |
| 173 | if(allTiles.empty()) |
| 174 | return nullptr; |
| 175 | |
| 176 | int minX, maxX, minY, maxY; |
| 177 | minX = maxX = allTiles[0]->getX(); |
| 178 | minY = maxY = allTiles[0]->getY(); |
| 179 | |
| 180 | for(unsigned int i = 0, size = allTiles.size(); i < size; ++i) |
| 181 | { |
| 182 | int tempX = allTiles[i]->getX(); |
| 183 | int tempY = allTiles[i]->getY(); |
| 184 | |
| 185 | if (tempX < minX) |
| 186 | minX = tempX; |
| 187 | if (tempY < minY) |
| 188 | minY = tempY; |
| 189 | if (tempX > maxX) |
| 190 | maxX = tempX; |
| 191 | if (tempY > maxY) |
| 192 | maxY = tempY; |
| 193 | } |
| 194 | |
| 195 | return getGameMap()->getTile((minX + maxX) / 2, (minY + maxY) / 2); |
| 196 | } |
| 197 | |
| 198 | bool Building::removeCoveredTile(Tile* t) |
| 199 | { |
no test coverage detected