diff --git a/core/src/com/unciv/logic/map/mapgenerator/NaturalWonderGenerator.kt b/core/src/com/unciv/logic/map/mapgenerator/NaturalWonderGenerator.kt index f1f6d33d45..8e6a2e39f9 100644 --- a/core/src/com/unciv/logic/map/mapgenerator/NaturalWonderGenerator.kt +++ b/core/src/com/unciv/logic/map/mapgenerator/NaturalWonderGenerator.kt @@ -169,7 +169,8 @@ class NaturalWonderGenerator(val ruleset: Ruleset, val randomness: MapGeneration list.forEach { clearTile(it) it.naturalWonder = wonder.name - it.baseTerrain = wonder.turnsInto!! + if (wonder.turnsInto != null) + it.baseTerrain = wonder.turnsInto!! // Add all tiles within a certain distance to a blacklist so NW:s don't cluster blockedTiles.addAll(it.getTilesInDistance(it.tileMap.mapParameters.mapSize.height / 5)) } diff --git a/core/src/com/unciv/models/ruleset/tile/Terrain.kt b/core/src/com/unciv/models/ruleset/tile/Terrain.kt index 61113bd1db..af7a509d5e 100644 --- a/core/src/com/unciv/models/ruleset/tile/Terrain.kt +++ b/core/src/com/unciv/models/ruleset/tile/Terrain.kt @@ -69,7 +69,7 @@ class Terrain : RulesetStatsObject() { val textList = ArrayList() - if (turnsInto != null) { + if (type == TerrainType.NaturalWonder) { textList += FormattedLine("Natural Wonder", header=3, color="#3A0") } diff --git a/core/src/com/unciv/ui/civilopedia/CivilopediaCategories.kt b/core/src/com/unciv/ui/civilopedia/CivilopediaCategories.kt index b1ca5a0cec..41b59e6f4e 100644 --- a/core/src/com/unciv/ui/civilopedia/CivilopediaCategories.kt +++ b/core/src/com/unciv/ui/civilopedia/CivilopediaCategories.kt @@ -29,7 +29,7 @@ object CivilopediaImageGetters { when (terrain.type) { TerrainType.NaturalWonder -> { tile.naturalWonder = terrain.name - tile.baseTerrain = terrain.turnsInto ?: Constants.grassland + tile.baseTerrain = terrain.turnsInto ?: terrain.occursOn.firstOrNull() ?: Constants.grassland } TerrainType.TerrainFeature -> { tile.baseTerrain = diff --git a/core/src/com/unciv/ui/mapeditor/TileInfoNormalizer.kt b/core/src/com/unciv/ui/mapeditor/TileInfoNormalizer.kt index a13d460360..4a6dcc4f94 100644 --- a/core/src/com/unciv/ui/mapeditor/TileInfoNormalizer.kt +++ b/core/src/com/unciv/ui/mapeditor/TileInfoNormalizer.kt @@ -11,7 +11,8 @@ object TileInfoNormalizer { if (tile.naturalWonder != null && !ruleset.terrains.containsKey(tile.naturalWonder)) tile.naturalWonder = null if (tile.naturalWonder != null) { - tile.baseTerrain = tile.getNaturalWonder().turnsInto!! + if (tile.getNaturalWonder().turnsInto != null) + tile.baseTerrain = tile.getNaturalWonder().turnsInto!! tile.setTerrainFeatures(listOf()) tile.resource = null tile.changeImprovement(null) diff --git a/core/src/com/unciv/ui/mapeditor/tabs/MapEditorEditSubTabs.kt b/core/src/com/unciv/ui/mapeditor/tabs/MapEditorEditSubTabs.kt index f7871f00e5..1d7e09b6b8 100644 --- a/core/src/com/unciv/ui/mapeditor/tabs/MapEditorEditSubTabs.kt +++ b/core/src/com/unciv/ui/mapeditor/tabs/MapEditorEditSubTabs.kt @@ -119,7 +119,8 @@ class MapEditorEditWondersTab( ) { editTab.setBrush(it, "Terrain/$it") { tile -> // Normally the caller would ensure compliance, but here we make an exception - place it no matter what - tile.baseTerrain = ruleset.terrains[it]!!.turnsInto!! + if (ruleset.terrains[it]!!.turnsInto != null) + tile.baseTerrain = ruleset.terrains[it]!!.turnsInto!! tile.removeTerrainFeatures() tile.naturalWonder = it } diff --git a/core/src/com/unciv/ui/tilegroups/layers/TileLayerTerrain.kt b/core/src/com/unciv/ui/tilegroups/layers/TileLayerTerrain.kt index 0e432ea182..ff4afb5005 100644 --- a/core/src/com/unciv/ui/tilegroups/layers/TileLayerTerrain.kt +++ b/core/src/com/unciv/ui/tilegroups/layers/TileLayerTerrain.kt @@ -49,10 +49,6 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, val tile = tileGroup.tile - if (tile.naturalWonder != null) - return if (strings().tileSetConfig.useSummaryImages) baseHexagon + strings().naturalWonder - else baseHexagon + strings().orFallback{ getTile(tile.naturalWonder!!) } - val shownImprovement = tile.getShownImprovement(viewingCiv) val shouldShowImprovement = shownImprovement != null && UncivGame.Current.settings.showPixelImprovements @@ -64,13 +60,16 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, if (shouldShowImprovement) yield(shownImprovement!!) } - val terrainImages = sequenceOf(tile.baseTerrain) + tile.terrainFeatures.asSequence() + val terrainImages = if (tile.naturalWonder != null) + sequenceOf(tile.baseTerrain, tile.naturalWonder!!) + else sequenceOf(tile.baseTerrain) + tile.terrainFeatures.asSequence() val allTogether = (terrainImages + resourceAndImprovementSequence).joinToString("+") val allTogetherLocation = strings().getTile(allTogether) return when { strings().tileSetConfig.ruleVariants[allTogether] != null -> baseHexagon + strings().tileSetConfig.ruleVariants[allTogether]!!.map { strings().getTile(it) } ImageGetter.imageExists(allTogetherLocation) -> baseHexagon + allTogetherLocation + tile.naturalWonder != null -> getNaturalWonderBackupImage(baseHexagon) else -> baseHexagon + getTerrainImageLocations(terrainImages) + getImprovementAndResourceImages(resourceAndImprovementSequence) } } @@ -193,4 +192,8 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, updateRivers(displayBottomRight = false, displayBottom = false, displayBottomLeft = false) } + private fun getNaturalWonderBackupImage(baseHexagon: List): List = + if (strings().tileSetConfig.useSummaryImages) baseHexagon + strings().naturalWonder + else baseHexagon + strings().orFallback{ getTile(tileGroup.tile.naturalWonder!!) } + }