| 19 | } |
| 20 | |
| 21 | OpenLoco::Scenario::Options importOptions(const S5::Options& src) |
| 22 | { |
| 23 | OpenLoco::Scenario::Options dst{}; |
| 24 | dst.editorStep = static_cast<EditorController::Step>(src.editorStep); |
| 25 | dst.difficulty = src.difficulty; |
| 26 | dst.scenarioStartYear = src.scenarioStartYear; |
| 27 | dst.scenarioFlags = static_cast<Scenario::ScenarioFlags>(src.scenarioFlags); |
| 28 | dst.madeAnyChanges = src.madeAnyChanges; |
| 29 | for (auto i = 0U; i < std::size(src.landDistributionPatterns); i++) |
| 30 | { |
| 31 | dst.landDistributionPatterns[i] = static_cast<Scenario::LandDistributionPattern>(src.landDistributionPatterns[i]); |
| 32 | } |
| 33 | std::ranges::copy(src.scenarioName, dst.scenarioName); |
| 34 | std::ranges::copy(src.scenarioDetails, dst.scenarioDetails); |
| 35 | dst.scenarioText = src.scenarioText; |
| 36 | dst.numberOfForests = src.numberOfForests; |
| 37 | dst.minForestRadius = src.minForestRadius; |
| 38 | dst.maxForestRadius = src.maxForestRadius; |
| 39 | dst.minForestDensity = src.minForestDensity; |
| 40 | dst.maxForestDensity = src.maxForestDensity; |
| 41 | dst.numberRandomTrees = src.numberRandomTrees; |
| 42 | dst.minAltitudeForTrees = src.minAltitudeForTrees; |
| 43 | dst.maxAltitudeForTrees = src.maxAltitudeForTrees; |
| 44 | dst.minLandHeight = src.minLandHeight; |
| 45 | dst.topographyStyle = static_cast<Scenario::TopographyStyle>(src.topographyStyle); |
| 46 | dst.hillDensity = src.hillDensity; |
| 47 | dst.numberOfTowns = src.numberOfTowns; |
| 48 | dst.maxTownSize = src.maxTownSize; |
| 49 | dst.numberOfIndustries = src.numberOfIndustries; |
| 50 | std::memcpy(dst.preview, src.preview, sizeof(src.preview)); |
| 51 | dst.maxCompetingCompanies = src.maxCompetingCompanies; |
| 52 | dst.competitorStartDelay = src.competitorStartDelay; |
| 53 | dst.objective = importObjective(src.objective); |
| 54 | dst.objectiveDeliveredCargo = src.objectiveDeliveredCargo; |
| 55 | dst.currency = src.currency; |
| 56 | |
| 57 | dst.generator = static_cast<Scenario::LandGeneratorType>(src.generator); |
| 58 | dst.numTerrainSmoothingPasses = src.numTerrainSmoothingPasses; |
| 59 | dst.numRiverbeds = src.numRiverbeds; |
| 60 | dst.minRiverWidth = src.minRiverWidth; |
| 61 | dst.maxRiverWidth = src.maxRiverWidth; |
| 62 | dst.riverbankWidth = src.riverbankWidth; |
| 63 | dst.riverMeanderRate = src.riverMeanderRate; |
| 64 | |
| 65 | return dst; |
| 66 | } |
| 67 | |
| 68 | static S5::Objective exportObjective(const OpenLoco::Scenario::Objective& src) |
| 69 | { |
no test coverage detected