From 34815eb2964d71afccea2ca8caf67b50fcaeb611 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 6 Feb 2023 22:06:05 +0200 Subject: [PATCH] Resolved #8480 - generated maps no longer contain forbidden tile arrangements --- core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt | 8 +++++++- core/src/com/unciv/ui/multiplayer/GameList.kt | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt b/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt index a95e16c526..7512663453 100644 --- a/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt +++ b/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt @@ -7,8 +7,8 @@ import com.unciv.logic.map.HexMath import com.unciv.logic.map.MapParameters import com.unciv.logic.map.MapShape import com.unciv.logic.map.MapType -import com.unciv.logic.map.tile.Tile import com.unciv.logic.map.TileMap +import com.unciv.logic.map.tile.Tile import com.unciv.models.Counter import com.unciv.models.metadata.GameParameters import com.unciv.models.ruleset.Ruleset @@ -18,6 +18,7 @@ import com.unciv.models.ruleset.tile.TerrainType import com.unciv.models.ruleset.unique.Unique import com.unciv.models.ruleset.unique.UniqueType import com.unciv.ui.mapeditor.MapGeneratorSteps +import com.unciv.ui.mapeditor.TileInfoNormalizer import com.unciv.utils.Log import com.unciv.utils.debug import kotlin.math.abs @@ -164,6 +165,11 @@ class MapGenerator(val ruleset: Ruleset) { runAndMeasure("spreadAncientRuins") { spreadAncientRuins(map) } + + // Map generation may generate incompatible terrain/feature combinations + for (tile in map.values) + TileInfoNormalizer.normalizeToRuleset(tile, ruleset) + return map } diff --git a/core/src/com/unciv/ui/multiplayer/GameList.kt b/core/src/com/unciv/ui/multiplayer/GameList.kt index 8b0e0039bb..10bf3b6c87 100644 --- a/core/src/com/unciv/ui/multiplayer/GameList.kt +++ b/core/src/com/unciv/ui/multiplayer/GameList.kt @@ -93,9 +93,9 @@ private class GameDisplay( onClick { onSelected(gameName) } val isOurGame: (HasMultiplayerGameName) -> Boolean = { it.name == gameName } - events.receive(MultiplayerGameUpdateStarted::class, isOurGame, { + events.receive(MultiplayerGameUpdateStarted::class, isOurGame) { statusIndicators.addActor(refreshIndicator) - }) + } events.receive(MultiplayerGameUpdateEnded::class, isOurGame) { refreshIndicator.remove() }