mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-12 03:48:16 +07:00
Resolve #4758 - Humidity/Temperature restrictions work on terrain features
This commit is contained in:
parent
6f5edbae0c
commit
2bd59b2147
@ -627,10 +627,19 @@ class MapGenerator(val ruleset: Ruleset) {
|
||||
// Checking it.baseTerrain in candidateTerrains to make sure forest does not spawn on desert hill
|
||||
for (tile in tileMap.values.asSequence().filter { it.baseTerrain in candidateTerrains
|
||||
&& it.getLastTerrain().name in candidateTerrains }) {
|
||||
|
||||
val vegetation = (randomness.getPerlinNoise(tile, vegetationSeed, scale = 3.0, nOctaves = 1) + 1.0) / 2.0
|
||||
|
||||
if (vegetation <= tileMap.mapParameters.vegetationRichness) {
|
||||
val randomVegetation = vegetationTerrains.filter { it.occursOn.contains(tile.getLastTerrain().name) }.random(randomness.RNG)
|
||||
val possibleVegetation = vegetationTerrains.filter { vegetationTerrain ->
|
||||
vegetationTerrain.occursOn.contains(tile.getLastTerrain().name)
|
||||
&& vegetationTerrain.getMatchingUniques(UniqueType.TileGenerationConditions).none {
|
||||
tile.temperature!! < it.params[0].toDouble() || tile.temperature!! > it.params[1].toDouble()
|
||||
|| tile.humidity!! < it.params[2].toDouble() || tile.humidity!! > it.params[3].toDouble()
|
||||
}
|
||||
}
|
||||
if (possibleVegetation.isEmpty()) continue
|
||||
val randomVegetation = possibleVegetation.random(randomness.RNG)
|
||||
tile.addTerrainFeature(randomVegetation.name)
|
||||
}
|
||||
}
|
||||
|
@ -1445,8 +1445,8 @@ class MapRegions (val ruleset: Ruleset){
|
||||
!tile.getBaseTerrain().hasUnique(UniqueType.BlocksResources, conditionalTerrain) &&
|
||||
!resource.hasUnique(UniqueType.NoNaturalGeneration, conditionalTerrain) &&
|
||||
resource.getMatchingUniques(UniqueType.TileGenerationConditions).none {
|
||||
tile.temperature!! < it.params[0].toDouble() || tile.temperature!! > it.params[1].toDouble()
|
||||
|| tile.humidity!! < it.params[2].toDouble() || tile.humidity!! > it.params[3].toDouble()
|
||||
tile.temperature!! !in it.params[0].toDouble() .. it.params[1].toDouble()
|
||||
|| tile.humidity!! !in it.params[2].toDouble() .. it.params[3].toDouble()
|
||||
}
|
||||
) {
|
||||
if (ratioProgress >= 1f &&
|
||||
|
Loading…
Reference in New Issue
Block a user