| 357 | } |
| 358 | |
| 359 | static bool uncat_plant(df::plant *plant) |
| 360 | { // Remove plant from extra vectors |
| 361 | vector<df::plant *> *vec = NULL; |
| 362 | |
| 363 | switch (plant->type) |
| 364 | { |
| 365 | case plant_type::DRY_TREE: vec = &world->plants.tree_dry; break; |
| 366 | case plant_type::WET_TREE: vec = &world->plants.tree_wet; break; |
| 367 | case plant_type::DRY_PLANT: vec = &world->plants.shrub_dry; break; |
| 368 | case plant_type::WET_PLANT: vec = &world->plants.shrub_wet; break; |
| 369 | } |
| 370 | |
| 371 | for (size_t i = vec->size(); i-- > 0;) |
| 372 | { // Not sorted, but more likely near end |
| 373 | if ((*vec)[i] == plant) |
| 374 | { |
| 375 | vec->erase(vec->begin() + i); |
| 376 | break; |
| 377 | } |
| 378 | } |
| 379 | |
| 380 | auto col = Maps::getBlockColumn((plant->pos.x / 48)*3, (plant->pos.y / 48)*3); |
| 381 | if (!col) |
| 382 | return false; |
| 383 | |
| 384 | vec = &col->plants; |
| 385 | for (size_t i = vec->size(); i-- > 0;) |
| 386 | { // Not sorted, but more likely near end |
| 387 | if ((*vec)[i] == plant) |
| 388 | { |
| 389 | vec->erase(vec->begin() + i); |
| 390 | break; |
| 391 | } |
| 392 | } |
| 393 | |
| 394 | return true; |
| 395 | } |
| 396 | |
| 397 | static bool has_grass(df::map_block *block, int tx, int ty) |
| 398 | { // Block tile has grass |
no test coverage detected