Prevent ice on mountains, and atolls under ice, resources on snow, in flat earth ice walls. (#8178)

This commit is contained in:
Philip Keiter
2022-12-19 00:31:47 -06:00
committed by GitHub
parent 757f06e3ca
commit 1f284fee57

View File

@ -765,7 +765,7 @@ class MapGenerator(val ruleset: Ruleset) {
// Make center tiles ice or snow or mountain depending on availability // Make center tiles ice or snow or mountain depending on availability
if (isCenterTile && bestArcticTileName != null) { if (isCenterTile && bestArcticTileName != null) {
spawnFlatEarthCenterIceWall(tile, bestArcticTileName, iceTerrainName) spawnFlatEarthCenterIceWall(tile, bestArcticTileName, iceTerrainName, mountainTerrainName)
} }
// Make edge tiles randomly ice or snow or mountain if available // Make edge tiles randomly ice or snow or mountain if available
@ -775,22 +775,30 @@ class MapGenerator(val ruleset: Ruleset) {
} }
} }
private fun spawnFlatEarthCenterIceWall(tile: TileInfo, bestArcticTileName: String, iceTerrainName: String?) { private fun spawnFlatEarthCenterIceWall(tile: TileInfo, bestArcticTileName: String, iceTerrainName: String?, mountainTerrainName: String?) {
// Spawn ice on center tile // Spawn ice on center tile
if (bestArcticTileName == iceTerrainName) { if (bestArcticTileName == iceTerrainName) {
tile.baseTerrain = waterTerrainName tile.baseTerrain = waterTerrainName
tile.addTerrainFeature(iceTerrainName) tile.setTerrainFeatures(listOf(iceTerrainName))
} else if (iceTerrainName != null && bestArcticTileName != mountainTerrainName) {
tile.baseTerrain = bestArcticTileName // snow (or a mod's equivalent)
tile.setTerrainFeatures(listOf(iceTerrainName))
} else { } else {
tile.baseTerrain = bestArcticTileName tile.baseTerrain = bestArcticTileName // mountain (or a mod's equivalent)
tile.removeTerrainFeatures()
} }
// Spawn circle of ice around center tile // Spawn circle of ice around center tile
for (neighbor in tile.neighbors) { for (neighbor in tile.neighbors) {
if (bestArcticTileName == iceTerrainName) { if (bestArcticTileName == iceTerrainName) {
neighbor.baseTerrain = waterTerrainName neighbor.baseTerrain = waterTerrainName
neighbor.addTerrainFeature(iceTerrainName) neighbor.setTerrainFeatures(listOf(iceTerrainName))
} else if (iceTerrainName != null && bestArcticTileName != mountainTerrainName) {
neighbor.baseTerrain = bestArcticTileName // snow (or a mod's equivalent)
neighbor.setTerrainFeatures(listOf(iceTerrainName))
} else { } else {
neighbor.baseTerrain = bestArcticTileName neighbor.baseTerrain = bestArcticTileName // mountain (or a mod's equivalent)
neighbor.removeTerrainFeatures()
} }
// Spawn partial circle of ice around circle of ice // Spawn partial circle of ice around circle of ice
@ -799,9 +807,13 @@ class MapGenerator(val ruleset: Ruleset) {
// Do nothing most of the time at random. // Do nothing most of the time at random.
} else if (bestArcticTileName == iceTerrainName) { } else if (bestArcticTileName == iceTerrainName) {
neighbor2.baseTerrain = waterTerrainName neighbor2.baseTerrain = waterTerrainName
neighbor2.addTerrainFeature(iceTerrainName) neighbor2.setTerrainFeatures(listOf(iceTerrainName))
} else if (iceTerrainName != null && bestArcticTileName != mountainTerrainName) {
neighbor2.baseTerrain = bestArcticTileName // snow (or a mod's equivalent)
neighbor2.setTerrainFeatures(listOf(iceTerrainName))
} else { } else {
neighbor2.baseTerrain = bestArcticTileName neighbor2.baseTerrain = bestArcticTileName // mountain (or a mod's equivalent)
neighbor2.removeTerrainFeatures()
} }
} }
} }
@ -817,12 +829,13 @@ class MapGenerator(val ruleset: Ruleset) {
// Spawn arctic tiles on edge tile // Spawn arctic tiles on edge tile
if (arcticTileName == iceTerrainName) { if (arcticTileName == iceTerrainName) {
tile.baseTerrain = waterTerrainName tile.baseTerrain = waterTerrainName
tile.addTerrainFeature(iceTerrainName) tile.setTerrainFeatures(listOf(iceTerrainName))
} else if (iceTerrainName != null && arcticTileName != mountainTerrainName) { } else if (iceTerrainName != null && arcticTileName != mountainTerrainName) {
tile.baseTerrain = arcticTileName tile.baseTerrain = arcticTileName // snow (or a mod's equivalent)
tile.addTerrainFeature(iceTerrainName) tile.setTerrainFeatures(listOf(iceTerrainName))
} else { } else {
tile.baseTerrain = arcticTileName tile.baseTerrain = arcticTileName // mountain (or a mod's equivalent)
tile.removeTerrainFeatures()
} }
// Spawn partial circle of arctic tiles next to the edge // Spawn partial circle of arctic tiles next to the edge
@ -834,12 +847,13 @@ class MapGenerator(val ruleset: Ruleset) {
// Do nothing most of the time at random. // Do nothing most of the time at random.
} else if (arcticTileName == iceTerrainName) { } else if (arcticTileName == iceTerrainName) {
neighbor.baseTerrain = waterTerrainName neighbor.baseTerrain = waterTerrainName
neighbor.addTerrainFeature(iceTerrainName) neighbor.setTerrainFeatures(listOf(iceTerrainName))
} else if (iceTerrainName != null && arcticTileName != mountainTerrainName) { } else if (iceTerrainName != null && arcticTileName != mountainTerrainName) {
neighbor.baseTerrain = arcticTileName neighbor.baseTerrain = arcticTileName // snow (or a mod's equivalent)
neighbor.addTerrainFeature(iceTerrainName) neighbor.setTerrainFeatures(listOf(iceTerrainName))
} else { } else {
neighbor.baseTerrain = arcticTileName neighbor.baseTerrain = arcticTileName // mountain (or a mod's equivalent)
neighbor.removeTerrainFeatures()
} }
} }
} }