0x0046A021
| 511 | |
| 512 | // 0x0046A021 |
| 513 | static void generateTerrain(HeightMap& heightMap) |
| 514 | { |
| 515 | const auto style = getEverywhereSurfaceStyle(); |
| 516 | if (!style.has_value()) |
| 517 | { |
| 518 | return; |
| 519 | } |
| 520 | |
| 521 | const TilePosRangeView tileLoop = getDrawableTileRange(); |
| 522 | for (const auto& tilePos : tileLoop) |
| 523 | { |
| 524 | auto* surface = World::TileManager::get(tilePos).surface(); |
| 525 | if (surface == nullptr) |
| 526 | { |
| 527 | continue; |
| 528 | } |
| 529 | surface->setTerrain(*style); |
| 530 | surface->setGrowthStage(0); |
| 531 | |
| 532 | const auto variation = getRandomTerrainVariation(*surface); |
| 533 | if (variation.has_value()) |
| 534 | { |
| 535 | surface->setVariation(*variation); |
| 536 | } |
| 537 | } |
| 538 | |
| 539 | constexpr std::array landDistributionPatterns = { |
| 540 | Scenario::LandDistributionPattern::farFromWater, |
| 541 | Scenario::LandDistributionPattern::nearWater, |
| 542 | Scenario::LandDistributionPattern::onMountains, |
| 543 | Scenario::LandDistributionPattern::farFromMountains, |
| 544 | Scenario::LandDistributionPattern::inSmallRandomAreas, |
| 545 | Scenario::LandDistributionPattern::inLargeRandomAreas, |
| 546 | Scenario::LandDistributionPattern::aroundCliffs, |
| 547 | }; |
| 548 | |
| 549 | for (auto i = 0U; i < landDistributionPatterns.size(); i++) |
| 550 | { |
| 551 | updateProgress(55 + 12 * i); |
| 552 | |
| 553 | for (uint8_t landObjectIdx = 0; landObjectIdx < ObjectManager::getMaxObjects(ObjectType::land); ++landObjectIdx) |
| 554 | { |
| 555 | const auto* landObj = ObjectManager::get<LandObject>(landObjectIdx); |
| 556 | if (landObj == nullptr) |
| 557 | { |
| 558 | continue; |
| 559 | } |
| 560 | |
| 561 | const auto typePattern = Scenario::getOptions().landDistributionPatterns[landObjectIdx]; |
| 562 | const auto distPattern = landDistributionPatterns[i]; |
| 563 | if (typePattern != distPattern) |
| 564 | { |
| 565 | continue; |
| 566 | } |
| 567 | |
| 568 | _generateFuncs[enumValue(distPattern)](heightMap, landObjectIdx); |
| 569 | } |
| 570 | } |
no test coverage detected