| 190 | } |
| 191 | |
| 192 | void Trap::updateActiveSpots() |
| 193 | { |
| 194 | // For a trap, by default, every tile is an active spot |
| 195 | for(std::pair<Tile* const, TileData*>& p : mTileData) |
| 196 | { |
| 197 | TrapTileData* trapTileData = static_cast<TrapTileData*>(p.second); |
| 198 | if(trapTileData->getTrapEntity() == nullptr) |
| 199 | { |
| 200 | BuildingObject* obj = notifyActiveSpotCreated(p.first); |
| 201 | if(obj == nullptr) |
| 202 | continue; |
| 203 | |
| 204 | addBuildingObject(p.first, obj); |
| 205 | continue; |
| 206 | } |
| 207 | |
| 208 | if(trapTileData->getRemoveTrap()) |
| 209 | { |
| 210 | trapTileData->setRemoveTrap(false); |
| 211 | auto it = mBuildingObjects.find(p.first); |
| 212 | if(it == mBuildingObjects.end()) |
| 213 | continue; |
| 214 | |
| 215 | BuildingObject* trapEntity = it->second; |
| 216 | if(trapEntity->notifyRemoveAsked()) |
| 217 | removeBuildingObject(p.first); |
| 218 | else |
| 219 | mTrapEntitiesWaitingRemove.push_back(trapEntity); |
| 220 | |
| 221 | continue; |
| 222 | } |
| 223 | } |
| 224 | } |
| 225 | |
| 226 | BuildingObject* Trap::notifyActiveSpotCreated(Tile* tile) |
| 227 | { |
no test coverage detected