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