diff --git a/android/Images/OtherIcons/Cultured.png b/android/Images/OtherIcons/Cultured.png new file mode 100644 index 0000000000..b25fc10e75 Binary files /dev/null and b/android/Images/OtherIcons/Cultured.png differ diff --git a/android/Images/OtherIcons/Maritime.png b/android/Images/OtherIcons/Maritime.png new file mode 100644 index 0000000000..94f4053505 Binary files /dev/null and b/android/Images/OtherIcons/Maritime.png differ diff --git a/android/Images/OtherIcons/Mercantile.png b/android/Images/OtherIcons/Mercantile.png new file mode 100644 index 0000000000..2847c04dd8 Binary files /dev/null and b/android/Images/OtherIcons/Mercantile.png differ diff --git a/android/Images/OtherIcons/Militaristic.png b/android/Images/OtherIcons/Militaristic.png new file mode 100644 index 0000000000..5ba66260d2 Binary files /dev/null and b/android/Images/OtherIcons/Militaristic.png differ diff --git a/android/Images/OtherIcons/Religious.png b/android/Images/OtherIcons/Religious.png new file mode 100644 index 0000000000..7cde1f5791 Binary files /dev/null and b/android/Images/OtherIcons/Religious.png differ diff --git a/core/src/com/unciv/logic/civilization/CityStateType.kt b/core/src/com/unciv/logic/civilization/CityStateType.kt index 41409248c5..9c30e1a35a 100644 --- a/core/src/com/unciv/logic/civilization/CityStateType.kt +++ b/core/src/com/unciv/logic/civilization/CityStateType.kt @@ -1,10 +1,11 @@ package com.unciv.logic.civilization -enum class CityStateType(val color: String = "") { - Cultured("#8b60ff"), - Maritime("#38ff70"), - Mercantile("#ffd800"), - Militaristic("#ff0000") +enum class CityStateType(val color: String = "", val icon: String) { + Cultured("#8b60ff", "OtherIcons/Cultured"), + Maritime("#38ff70", "OtherIcons/Maritime"), + Mercantile("#ffd800", "OtherIcons/Mercantile"), + Militaristic("#ff0000", "OtherIcons/Militaristic"), + //Religious("#FFFFFF", "OtherIcons/Religious") } enum class CityStatePersonality { diff --git a/core/src/com/unciv/ui/tilegroups/CityButton.kt b/core/src/com/unciv/ui/tilegroups/CityButton.kt index 8beb9c9f49..53cf3987e8 100644 --- a/core/src/com/unciv/ui/tilegroups/CityButton.kt +++ b/core/src/com/unciv/ui/tilegroups/CityButton.kt @@ -15,6 +15,7 @@ import com.unciv.logic.city.CityConstructions import com.unciv.logic.city.CityInfo import com.unciv.logic.city.INonPerpetualConstruction import com.unciv.logic.city.PerpetualConstruction +import com.unciv.logic.civilization.CityStateType import com.unciv.logic.civilization.diplomacy.RelationshipLevel import com.unciv.ui.cityscreen.CityScreen import com.unciv.ui.trade.DiplomacyScreen @@ -226,7 +227,8 @@ class CityButton(val city: CityInfo, private val tileGroup: WorldTileGroup): Tab val cityButtonText = city.name val label = cityButtonText.toLabel(secondaryColor) - iconTable.add(label).padRight(20f).padLeft(20f) // sufficient horizontal padding + val rightPadding = if (city.civInfo.isCityState()) 10f else 20f // CS needs less padding here as there will be an icon + iconTable.add(label).padRight(rightPadding).padLeft(20f) // sufficient horizontal padding .fillY() // provide full-height clicking area label.toBack() // this is so the label is rendered right before the population group, // so we save the font texture and avoid another texture switch @@ -237,6 +239,11 @@ class CityButton(val city: CityInfo, private val tileGroup: WorldTileGroup): Tab iconTable.addActor(cityStrengthLabel) // We create this here to we can .toBack() it as well. cityStrengthLabel.toBack() + if (city.civInfo.isCityState()) { + val cityStateImage = ImageGetter.getImage(city.civInfo.cityStateType.icon).apply { color = secondaryColor } + iconTable.add(cityStateImage).size(20f).fillY() + } + if (uncivGame.viewEntireMapForDebug || belongsToViewingCiv() || worldScreen.viewingCiv.isSpectator()) { val constructionGroup = getConstructionGroup(city.cityConstructions) iconTable.add(constructionGroup) diff --git a/core/src/com/unciv/ui/trade/DiplomacyScreen.kt b/core/src/com/unciv/ui/trade/DiplomacyScreen.kt index a05d41325b..f95df66260 100644 --- a/core/src/com/unciv/ui/trade/DiplomacyScreen.kt +++ b/core/src/com/unciv/ui/trade/DiplomacyScreen.kt @@ -89,6 +89,17 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() { } civIndicator.addActor(relationshipIcon) + if (civ.isCityState()) { + val innerColor = civ.gameInfo.ruleSet.nations[civ.civName]!!.getInnerColor() + val typeIcon = ImageGetter.getImage(civ.cityStateType.icon) + .surroundWithCircle(size = 35f, color = innerColor).apply { + actor.color = Color.BLACK + } + civIndicator.addActor(typeIcon) + typeIcon.y = floor(civIndicator.height - typeIcon.height) + typeIcon.x = floor(civIndicator.width - typeIcon.width) + } + if (civ.isCityState() && civ.questManager.haveQuestsFor(viewingCiv)) { val questIcon = ImageGetter.getImage("OtherIcons/Quest") .surroundWithCircle(size = 30f, color = Color.GOLDENROD) diff --git a/docs/Credits.md b/docs/Credits.md index 5029c44e40..6d324f64d7 100644 --- a/docs/Credits.md +++ b/docs/Credits.md @@ -634,6 +634,10 @@ Unless otherwise specified, all the following are from [the Noun Project](https: * [Shield](https://thenounproject.com/search/?q=shield&i=813568) by Gregor Cresnar for Religious Strength * [skill sword flame](https://thenounproject.com/term/skill-sword-flame/2360212/) by Maxicons) for Remove Heresy * [Pencil](https://thenounproject.com/search/?q=pencil&i=4195852) by Muhamad Aldi Maulana for Enter Text Prompt Button / Pencil +* [Parchment](https://thenounproject.com/term/parchment/1516378/) by hans draiman for Cultured City-States +* [connection](https://thenounproject.com/term/connection/1365233/) by Popular for Mercantile City-States +* [crossed sword](https://thenounproject.com/term/crossed-sword/2427559/) by ProSymbols for Militaristic City-States +* [ship helm](https://thenounproject.com/term/ship-helm/2170591/) by Vectors Market for Maritime City-States ## Main menu