diff --git a/core/src/com/unciv/logic/map/TileMap.kt b/core/src/com/unciv/logic/map/TileMap.kt index 3ae0f5ce82..68a50b5597 100644 --- a/core/src/com/unciv/logic/map/TileMap.kt +++ b/core/src/com/unciv/logic/map/TileMap.kt @@ -310,6 +310,7 @@ class TileMap(initialCapacity: Int = 10) : IsPartOfGameInfoSerialization { return null } + /** * Returns the clock position of [otherTile] seen from [tile]'s position * Returns -1 if not neighbors @@ -789,3 +790,16 @@ class TileMap(initialCapacity: Int = 10) : IsPartOfGameInfoSerialization { .distinct() } } + +enum class NeighborDirection(val clockPosition: Int) { + TopRight(2), + BottomRight(4), + Bottom(6), + BottomLeft(8), + TopLeft(10), + Top(12); + + companion object { + val byClockPosition = entries.associateBy { it.clockPosition } + } +} \ No newline at end of file diff --git a/core/src/com/unciv/ui/components/tilegroups/TileSetStrings.kt b/core/src/com/unciv/ui/components/tilegroups/TileSetStrings.kt index 349f4a2d3a..dbd921b04b 100644 --- a/core/src/com/unciv/ui/components/tilegroups/TileSetStrings.kt +++ b/core/src/com/unciv/ui/components/tilegroups/TileSetStrings.kt @@ -2,6 +2,7 @@ package com.unciv.ui.components.tilegroups import com.unciv.UncivGame import com.unciv.logic.civilization.Civilization +import com.unciv.logic.map.NeighborDirection import com.unciv.logic.map.mapunit.MapUnit import com.unciv.logic.map.tile.RoadStatus import com.unciv.models.metadata.GameSettings @@ -9,7 +10,6 @@ import com.unciv.models.ruleset.Ruleset import com.unciv.models.tilesets.TileSetCache import com.unciv.models.tilesets.TileSetConfig import com.unciv.ui.components.tilegroups.layers.EdgeTileImage -import com.unciv.ui.components.tilegroups.layers.NeighborDirection import com.unciv.ui.images.ImageAttempter import com.unciv.ui.images.ImageGetter diff --git a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt index 48b8e76a99..7a64c5a5c8 100644 --- a/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt +++ b/core/src/com/unciv/ui/components/tilegroups/layers/TileLayerTerrain.kt @@ -2,15 +2,15 @@ package com.unciv.ui.components.tilegroups.layers import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.Batch -import com.badlogic.gdx.math.Vector2 import com.badlogic.gdx.scenes.scene2d.Actor import com.badlogic.gdx.scenes.scene2d.ui.Image import com.unciv.UncivGame import com.unciv.logic.civilization.Civilization +import com.unciv.logic.map.NeighborDirection import com.unciv.logic.map.tile.Tile import com.unciv.models.ruleset.unique.LocalUniqueCache -import com.unciv.ui.images.ImageGetter import com.unciv.ui.components.tilegroups.TileGroup +import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen import kotlin.random.Random @@ -108,7 +108,8 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, private val neighborEdgeDataList: Sequence = if (!tile.isTilemapInitialized()) emptySequence() else tile.neighbors.map { - val direction = NeighborDirection.fromVector(it.position.cpy().sub(tile.position)) + val clockPosition = tile.tileMap.getNeighborTileClockPosition(tile, it) + val direction = NeighborDirection.byClockPosition[clockPosition] NeighborEdgeData(it, direction) }.toList().asSequence() @@ -275,24 +276,4 @@ class TileLayerTerrain(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, } -enum class NeighborDirection { - Top, TopRight, TopLeft, Bottom, BottomLeft, BottomRight; - - companion object { - fun fromVector(vector2: Vector2): NeighborDirection? { - val x = vector2.x.toInt() - val y = vector2.y.toInt() - return when (x) { - 1 -> if (y == 1) Top // x == 1 && y == 1 - else TopLeft // x == 1 && y == 0 - 0 -> if (y == 1) TopRight // x == 0 && y == 1 - else BottomLeft // x == 0 && y == -1 - -1 -> if (y == -1) Bottom // x == -1 && y == -1 - else BottomRight // x == -1 && y == 0 - else -> null - } - } - } -} - data class EdgeTileImage(val fileName:String, val originTileFilter: String, val destinationTileFilter: String, val edgeType: NeighborDirection)