diff --git a/android/assets/UnitIcons/Circle.png b/android/assets/UnitIcons/Circle.png new file mode 100644 index 0000000000..f1de1e08a7 Binary files /dev/null and b/android/assets/UnitIcons/Circle.png differ diff --git a/android/assets/UnitIcons/Great Artist.png b/android/assets/UnitIcons/Great Artist.png new file mode 100644 index 0000000000..1d6efdeb7b Binary files /dev/null and b/android/assets/UnitIcons/Great Artist.png differ diff --git a/android/assets/UnitIcons/Great Engineer.png b/android/assets/UnitIcons/Great Engineer.png new file mode 100644 index 0000000000..4506cb2899 Binary files /dev/null and b/android/assets/UnitIcons/Great Engineer.png differ diff --git a/android/assets/UnitIcons/Great Merchant.png b/android/assets/UnitIcons/Great Merchant.png new file mode 100644 index 0000000000..8841a7a8f7 Binary files /dev/null and b/android/assets/UnitIcons/Great Merchant.png differ diff --git a/android/assets/UnitIcons/Great Scientist.png b/android/assets/UnitIcons/Great Scientist.png new file mode 100644 index 0000000000..6d5f8c98b7 Binary files /dev/null and b/android/assets/UnitIcons/Great Scientist.png differ diff --git a/android/assets/UnitIcons/Scout.png b/android/assets/UnitIcons/Scout.png new file mode 100644 index 0000000000..c6bb769f29 Binary files /dev/null and b/android/assets/UnitIcons/Scout.png differ diff --git a/android/assets/UnitIcons/Settler.png b/android/assets/UnitIcons/Settler.png new file mode 100644 index 0000000000..36f6c254be Binary files /dev/null and b/android/assets/UnitIcons/Settler.png differ diff --git a/android/assets/UnitIcons/Warrior.png b/android/assets/UnitIcons/Warrior.png new file mode 100644 index 0000000000..41b6fdac9b Binary files /dev/null and b/android/assets/UnitIcons/Warrior.png differ diff --git a/android/assets/UnitIcons/Worker.png b/android/assets/UnitIcons/Worker.png new file mode 100644 index 0000000000..1a1709920a Binary files /dev/null and b/android/assets/UnitIcons/Worker.png differ diff --git a/android/assets/jsons/Civilizations.json b/android/assets/jsons/Civilizations.json new file mode 100644 index 0000000000..2868a2df6c --- /dev/null +++ b/android/assets/jsons/Civilizations.json @@ -0,0 +1,6 @@ +[ + { + name:"Babylon", + RGB:[220,20,60] + } +] \ No newline at end of file diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index ae3641306e..a12701f4bb 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -4,6 +4,7 @@ import com.badlogic.gdx.math.Vector2 import com.unciv.logic.GameInfo import com.unciv.logic.city.CityInfo import com.unciv.logic.map.RoadStatus +import com.unciv.models.gamebasics.Civilization import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.ResourceType import com.unciv.models.gamebasics.TileResource @@ -28,6 +29,8 @@ class CivilizationInfo { var cities = ArrayList() + fun getCivilization(): Civilization {return GameBasics.Civilizations[civName]!!} + val capital: CityInfo get() = cities.first { it.cityConstructions.isBuilt("Palace") } diff --git a/core/src/com/unciv/models/gamebasics/Civilization.kt b/core/src/com/unciv/models/gamebasics/Civilization.kt new file mode 100644 index 0000000000..4e09c4a419 --- /dev/null +++ b/core/src/com/unciv/models/gamebasics/Civilization.kt @@ -0,0 +1,12 @@ +package com.unciv.models.gamebasics + +import com.badlogic.gdx.graphics.Color +import com.unciv.models.stats.INamed + +class Civilization : INamed { + override lateinit var name: String + lateinit var RGB: List + fun getColor(): Color { + return Color(RGB[0]/256f, RGB[1]/256f, RGB[2]/256f, 1f) + } +} diff --git a/core/src/com/unciv/models/gamebasics/GameBasics.kt b/core/src/com/unciv/models/gamebasics/GameBasics.kt index 0d4f68784f..582ff2cce8 100644 --- a/core/src/com/unciv/models/gamebasics/GameBasics.kt +++ b/core/src/com/unciv/models/gamebasics/GameBasics.kt @@ -8,6 +8,7 @@ object GameBasics { val Technologies = LinkedHashMap() val Helps = LinkedHashMap() val Units = LinkedHashMap() + val Civilizations = LinkedHashMap() val PolicyBranches = LinkedHashMap() val Tutorials = LinkedHashMap>() } \ No newline at end of file diff --git a/core/src/com/unciv/ui/UnCivGame.kt b/core/src/com/unciv/ui/UnCivGame.kt index b128ce1161..d41137a789 100644 --- a/core/src/com/unciv/ui/UnCivGame.kt +++ b/core/src/com/unciv/ui/UnCivGame.kt @@ -25,6 +25,11 @@ class UnCivGame : Game() { if (GameSaver.GetSave("Autosave").exists()) { try { GameSaver.LoadGame(this, "Autosave") + gameInfo.getPlayerCivilization().civName="Babylon" + gameInfo.tileMap.values.forEach { + if (it.owner == "Player") it.owner = "Babylon" + if (it.unit != null && it.unit!!.owner == "Player") it.unit!!.owner = "Babylon" + } } catch (ex: Exception) { // silent fail if we can't read the autosave startNewGame() } @@ -38,7 +43,7 @@ class UnCivGame : Game() { fun startNewGame() { gameInfo = GameInfo() gameInfo.tileMap = TileMap(20) - gameInfo.civilizations.add(CivilizationInfo("Player", Vector2.Zero, gameInfo)) + gameInfo.civilizations.add(CivilizationInfo("Babylon", Vector2.Zero, gameInfo)) gameInfo.setTransients() worldScreen = WorldScreen() @@ -71,12 +76,13 @@ class UnCivGame : Game() { GameBasics.Helps += createHashmap(getFromJson(Array::class.java, "BasicHelp")) GameBasics.Units += createHashmap(getFromJson(Array::class.java, "Units")) GameBasics.PolicyBranches += createHashmap(getFromJson(Array::class.java, "Policies")) + GameBasics.Civilizations += createHashmap(getFromJson(Array::class.java, "Civilizations")) // ...Yes. Total Voodoo. I wish I didn't have to do this. val x = LinkedHashMap>>() val tutorials = getFromJson(x.javaClass, "Tutorials") for (tut in tutorials) - GameBasics.Tutorials.put(tut.key,tut.value.map{it.joinToString("\r\n")}) + GameBasics.Tutorials[tut.key] = tut.value.map{it.joinToString("\r\n")} val techColumns = getFromJson(Array::class.java, "Techs") for (techColumn in techColumns) { diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 1a190b21e6..a459973676 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -15,7 +15,7 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { protected var terrainFeatureImage:Image?=null protected var resourceImage: Image? = null - protected var unitImage: Image? = null + protected var unitImage: Group? = null protected var improvementImage: Image? =null private var improvementType: String? = null var populationImage: Image? = null @@ -74,15 +74,6 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { terrainFeatureImage=null } - if(cityImage==null && tileInfo.isCityCenter){ - terrainFeatureImage = ImageGetter.getImage("TerrainIcons/City.png") - addActor(terrainFeatureImage) - setSize(30f,30f) - setColor(1f,1f,1f,0.5f) - setPosition(this@TileGroup.width /2-width/2, - this@TileGroup.height/2-height/2) - } - } val RGB= tileInfo.getBaseTerrain().RGB!! hexagon.color = Color(RGB[0]/255f,RGB[1]/255f,RGB[2]/255f,1f) @@ -97,7 +88,8 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { } if (tileInfo.unit != null && unitImage == null) { - unitImage = ImageGetter.getImage("UnitIcons/" + tileInfo.unit!!.name!!.replace(" ", "_") + "_(Civ5).png") + val unit = tileInfo.unit!! + unitImage = getUnitImage(unit.name!!, unit.civInfo.getCivilization().getColor()) addActor(unitImage!!) unitImage!!.setSize(20f, 20f) unitImage!!.setPosition(width/2 - unitImage!!.width/2, @@ -183,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.color = Color.RED + image.color = tileInfo.getOwner()!!.getCivilization().getColor() 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) @@ -193,5 +185,22 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { } } + + private fun getUnitImage(unitType:String, color:Color): Group { + val unitBaseImage = ImageGetter.getImage("UnitIcons/$unitType.png") + .apply { setSize(15f,15f) } + val background = ImageGetter.getImage("UnitIcons/Circle.png").apply { + this.color = color + setSize(20f,20f) + } + val group = Group().apply { + setSize(background.width,background.height) + addActor(background) + } + unitBaseImage.setPosition(group.width/2-unitBaseImage.width/2, + group.height/2-unitBaseImage.height/2) + group.addActor(unitBaseImage) + return group + } }