From 66f900e4ec8e8791f773e5d9c8ef34a8c1300d17 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Fri, 16 Mar 2018 13:09:43 +0200 Subject: [PATCH] Changed terrain visualization - is now plain color awith overlays for terrain feature, looks really good! --- android/assets/TerrainIcons/Flood plains.png | Bin 0 -> 2739 bytes android/assets/TerrainIcons/Forest.png | Bin 0 -> 3660 bytes android/assets/TerrainIcons/Jungle.png | Bin 0 -> 5310 bytes android/assets/TerrainIcons/Marsh.png | Bin 0 -> 7159 bytes android/assets/TerrainIcons/Oasis.png | Bin 0 -> 5313 bytes android/assets/jsons/Terrains.json | 15 ++-- .../com/unciv/models/gamebasics/Terrain.kt | 17 +++-- core/src/com/unciv/ui/tilegroups/TileGroup.kt | 71 ++++++++++++------ .../com/unciv/ui/tilegroups/WorldTileGroup.kt | 12 --- 9 files changed, 67 insertions(+), 48 deletions(-) create mode 100644 android/assets/TerrainIcons/Flood plains.png create mode 100644 android/assets/TerrainIcons/Forest.png create mode 100644 android/assets/TerrainIcons/Jungle.png create mode 100644 android/assets/TerrainIcons/Marsh.png create mode 100644 android/assets/TerrainIcons/Oasis.png diff --git a/android/assets/TerrainIcons/Flood plains.png b/android/assets/TerrainIcons/Flood plains.png new file mode 100644 index 0000000000000000000000000000000000000000..59680f4325f1caa1d1d1bab13001552a0fa32e5b GIT binary patch literal 2739 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 literal 0 HcmV?d00001 diff --git a/android/assets/TerrainIcons/Jungle.png b/android/assets/TerrainIcons/Jungle.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e4443215234e0fb5b0a2bae2a4ed42c3970f48 GIT binary patch literal 5310 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 literal 0 HcmV?d00001 diff --git a/android/assets/TerrainIcons/Marsh.png b/android/assets/TerrainIcons/Marsh.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd3b592254f6e1684c790cd6430d09d567ccd60 GIT binary patch literal 7159 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 C{1*TK literal 0 HcmV?d00001 diff --git a/android/assets/jsons/Terrains.json b/android/assets/jsons/Terrains.json index cbd41d6ae2..289836cb21 100644 --- a/android/assets/jsons/Terrains.json +++ b/android/assets/jsons/Terrains.json @@ -4,25 +4,29 @@ name:"Grassland", type:"BaseTerrain", food:2, - movementCost:1 + movementCost:1, + RGB: [109,139,53] }, { name:"Plains", type:"BaseTerrain", food:1, production:1, - movementCost:1 + movementCost:1, + RGB: [200,208,161] }, { name:"Tundra", type:"BaseTerrain", food:1, - movementCost:1 + movementCost:1, + RGB: [125,122,113] }, { name:"Desert", type:"BaseTerrain", - movementCost:1 + movementCost:1, + RGB: [188,189,145] }, { name:"Lakes", @@ -35,7 +39,8 @@ name:"Hill", type:"BaseTerrain", production:2, - movementCost:2 + movementCost:2, + RGB: [74,81,40] }, // Terrain features diff --git a/core/src/com/unciv/models/gamebasics/Terrain.kt b/core/src/com/unciv/models/gamebasics/Terrain.kt index 89376799dd..34569577f8 100644 --- a/core/src/com/unciv/models/gamebasics/Terrain.kt +++ b/core/src/com/unciv/models/gamebasics/Terrain.kt @@ -5,27 +5,32 @@ import com.unciv.models.stats.NamedStats class Terrain : NamedStats(), ICivilopedia { override val description: String get() = this.clone().toString() - @JvmField var type: TerrainType? = null // BaseTerrain or TerrainFeature + lateinit var type: TerrainType - @JvmField var overrideStats = false + var overrideStats = false /*** * If true, other terrain layers can come over this one. For mountains, lakes etc. this is false */ - @JvmField var canHaveOverlay = true + var canHaveOverlay = true /*** * If true, nothing can be built here - not even resource improvements */ - @JvmField var unbuildable = false + var unbuildable = false /*** * For terrain features */ - @JvmField var occursOn: Collection? = null + var occursOn: Collection? = null - @JvmField var movementCost = 1 + /** + * RGB color of base terrain + */ + var RGB: List? = null + + var movementCost = 1 } diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 0f157dfb7c..abbf4efa27 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -5,42 +5,47 @@ import com.badlogic.gdx.scenes.scene2d.Group import com.badlogic.gdx.scenes.scene2d.ui.Container import com.badlogic.gdx.scenes.scene2d.ui.Image import com.badlogic.gdx.scenes.scene2d.ui.TextButton +import com.badlogic.gdx.utils.Align import com.unciv.logic.map.RoadStatus import com.unciv.logic.map.TileInfo import com.unciv.ui.utils.HexMath import com.unciv.ui.utils.ImageGetter open class TileGroup(var tileInfo: TileInfo) : Group() { - protected var terrainImage: Image - private var terrainType: String + + protected var hexagon: Image + protected var terrainFeatureImage:Image?=null + protected var resourceImage: Image? = null protected var unitImage: Image? = null protected var improvementImage: Image? =null private var improvementType: String? = null var populationImage: Image? = null private var roadImages = HashMap() - protected var hexagon: Image? = null protected var cityButton: Container? = null init { - - terrainType = tileInfo.lastTerrain.name - val terrainFileName = "TerrainIcons/" + terrainType.replace(' ', '_') + "_(Civ5).png" - terrainImage = ImageGetter.getImage(terrainFileName) - val groupSize = 50 - terrainImage.setSize(groupSize.toFloat(), groupSize.toFloat()) - this.setSize(groupSize.toFloat(), groupSize.toFloat()) - this.addActor(terrainImage) + val groupSize = 50f + this.setSize(groupSize,groupSize) + hexagon = ImageGetter.getImage("TerrainIcons/Hexagon.png") + val imageScale = groupSize * 1.3f / hexagon.width + hexagon.setScale(imageScale) + hexagon.setOrigin(Align.center) + hexagon.setPosition((width - hexagon.width) / 2, + (height - hexagon.height) / 2) + this.addActor(hexagon) + hexagon.zIndex = 0 } fun addPopulationIcon() { populationImage = ImageGetter.getImage("StatIcons/populationGreen.png") populationImage!!.run { setSize(20f, 20f) - moveBy(0f, terrainImage.height - populationImage!!.height) + setPosition(this@TileGroup.width/2 - width/2, + this@TileGroup.height/2 - height/2 - 15) } // top left - addActor(populationImage!!) + addActor(populationImage) } protected fun removePopulationIcon() { @@ -51,30 +56,45 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { open fun update() { if (!tileInfo.explored) { - terrainImage.color = Color.BLACK + hexagon.color = Color.BLACK return } - terrainImage.color = Color.WHITE + if(terrainFeatureImage==null && tileInfo.terrainFeature!=null){ + terrainFeatureImage = ImageGetter.getImage("TerrainIcons/${tileInfo.terrainFeature}.png") + addActor(terrainFeatureImage) + terrainFeatureImage!!.run { + setSize(30f,30f) + setColor(1f,1f,1f,0.5f) + setPosition(this@TileGroup.width /2-width/2, + this@TileGroup.height/2-height/2) + } - if (terrainType != tileInfo.lastTerrain.name) { - terrainType = tileInfo.lastTerrain.name - val terrainFileName = "TerrainIcons/" + terrainType.replace(' ', '_') + "_(Civ5).png" - terrainImage.drawable = ImageGetter.getDrawable(terrainFileName) // In case we e.g. removed a jungle } + if(terrainFeatureImage!=null && tileInfo.terrainFeature==null){ + terrainFeatureImage!!.remove() + terrainFeatureImage=null + } + + val RGB= tileInfo.getBaseTerrain().RGB!! + hexagon.color = Color(RGB[0]/255f,RGB[1]/255f,RGB[2]/255f,1f) + if (tileInfo.hasViewableResource(tileInfo.tileMap!!.gameInfo!!.getPlayerCivilization()) && resourceImage == null) { // Need to add the resource image! val fileName = "ResourceIcons/" + tileInfo.resource + "_(Civ5).png" resourceImage = ImageGetter.getImage(fileName) resourceImage!!.setSize(20f, 20f) - resourceImage!!.moveBy(terrainImage.width - resourceImage!!.width, 0f) // bottom right + resourceImage!!.setPosition(width/2 - resourceImage!!.width/2-20f, + height/2 - resourceImage!!.height/2) // left addActor(resourceImage!!) } if (tileInfo.unit != null && unitImage == null) { unitImage = ImageGetter.getImage("UnitIcons/" + tileInfo.unit!!.name!!.replace(" ", "_") + "_(Civ5).png") addActor(unitImage!!) - unitImage!!.setSize(20f, 20f) // not moved - is at bottom left + unitImage!!.setSize(20f, 20f) + unitImage!!.setPosition(width/2 - unitImage!!.width/2, + height/2 - unitImage!!.height/2 +15) // top } if (tileInfo.unit == null && unitImage != null) { @@ -95,9 +115,10 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { addActor(improvementImage) improvementImage!!.run { setSize(20f, 20f) - moveBy(terrainImage.width - width, - terrainImage.height - height) - } // top right + + setPosition(this@TileGroup.width/2 - width/2+20f, + this@TileGroup.height/2 - height/2) // right + } improvementType = tileInfo.improvement } @@ -154,7 +175,7 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { // Here, we want to have the roads start HALFWAY THERE and extend towards the tiles, so we give them a position of 0.8*25. image.moveBy(-relativeWorldPosition.x * 0.8f * 25f, -relativeWorldPosition.y * 0.8f * 25f) - image.setColor(Color.RED) + image.color = Color.RED image.setOrigin(image.width/2, image.height/2) // This is so that the rotation is calculated from the middle of the road and not the edge image.rotation = (90 + 180 / Math.PI * Math.atan2(relativeWorldPosition.y.toDouble(), relativeWorldPosition.x.toDouble())).toFloat() addActor(image) diff --git a/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt b/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt index de2fcb033d..64fee11abf 100644 --- a/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt @@ -6,7 +6,6 @@ import com.unciv.logic.map.TileInfo import com.unciv.ui.cityscreen.CityScreen import com.unciv.ui.cityscreen.addClickListener import com.unciv.ui.utils.CameraStageBaseScreen -import com.unciv.ui.utils.ImageGetter import com.unciv.ui.worldscreen.WorldScreen @@ -29,17 +28,6 @@ class WorldTileGroup(tileInfo: TileInfo) : TileGroup(tileInfo) { if (tileInfo.workingCity == null && populationImage != null) removePopulationIcon() - if (tileInfo.owner != null && hexagon == null) { - hexagon = ImageGetter.getImage("TerrainIcons/Hexagon.png") - val imageScale = terrainImage.width * 1.3f / hexagon!!.width - hexagon!!.setScale(imageScale) - hexagon!!.setPosition((width - hexagon!!.width * imageScale) / 2, - (height - hexagon!!.height * imageScale) / 2) - addActor(hexagon!!) - hexagon!!.zIndex = 0 - } - - val city = tileInfo.city if (tileInfo.isCityCenter) { val buttonScale = 0.7f