From 96c217fec8d7142ec2ac852141f4b6f19f9cbef1 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 22 Mar 2018 23:45:28 +0200 Subject: [PATCH] Added unit icons with the background according to owner --- android/assets/UnitIcons/Circle.png | Bin 0 -> 7630 bytes android/assets/UnitIcons/Great Artist.png | Bin 0 -> 5030 bytes android/assets/UnitIcons/Great Engineer.png | Bin 0 -> 2964 bytes android/assets/UnitIcons/Great Merchant.png | Bin 0 -> 5368 bytes android/assets/UnitIcons/Great Scientist.png | Bin 0 -> 4724 bytes android/assets/UnitIcons/Scout.png | Bin 0 -> 3272 bytes android/assets/UnitIcons/Settler.png | Bin 0 -> 1689 bytes android/assets/UnitIcons/Warrior.png | Bin 0 -> 2694 bytes android/assets/UnitIcons/Worker.png | Bin 0 -> 2447 bytes android/assets/jsons/Civilizations.json | 6 ++++ .../logic/civilization/CivilizationInfo.kt | 3 ++ .../unciv/models/gamebasics/Civilization.kt | 12 +++++++ .../com/unciv/models/gamebasics/GameBasics.kt | 1 + core/src/com/unciv/ui/UnCivGame.kt | 10 ++++-- core/src/com/unciv/ui/tilegroups/TileGroup.kt | 33 +++++++++++------- 15 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 android/assets/UnitIcons/Circle.png create mode 100644 android/assets/UnitIcons/Great Artist.png create mode 100644 android/assets/UnitIcons/Great Engineer.png create mode 100644 android/assets/UnitIcons/Great Merchant.png create mode 100644 android/assets/UnitIcons/Great Scientist.png create mode 100644 android/assets/UnitIcons/Scout.png create mode 100644 android/assets/UnitIcons/Settler.png create mode 100644 android/assets/UnitIcons/Warrior.png create mode 100644 android/assets/UnitIcons/Worker.png create mode 100644 android/assets/jsons/Civilizations.json create mode 100644 core/src/com/unciv/models/gamebasics/Civilization.kt diff --git a/android/assets/UnitIcons/Circle.png b/android/assets/UnitIcons/Circle.png new file mode 100644 index 0000000000000000000000000000000000000000..f1de1e08a7eae0238b5557caa8d1aaa944abe612 GIT binary patch literal 7630 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 `a1E7zo1`;p>DLY>-s;~gm}RJ`V`dPP%C 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 literal 0 HcmV?d00001 diff --git a/android/assets/UnitIcons/Great Engineer.png b/android/assets/UnitIcons/Great Engineer.png new file mode 100644 index 0000000000000000000000000000000000000000..4506cb28994bfaed653c1944de098c7d860db844 GIT binary patch literal 2964 zcmbtWi8s{k7oUwV*+UGn3}dI%XkJSuV`nT`Cd4ozyCQ?iR%G8QWKE$&%w)-$uYJi9 zqESd9$ugGLRx-co{QiXZbIyJ4eLnZx^PKZM_w$^aV2L;6)SR zcn`6$6UrMslIwl?NfEKfykovNdQ!kWKh$j1wXubNwL(buOn)%P%->+}a&3|}<4 z@bRr-ZO`HSAXeOe!prf60$uDmun;IHDk)kR&>onTnF8v7P9-I)XZ3jM_E(OgR-sUl27#QM_UkxnO?U%>V0duRQRLm3^WV4b^@fA@ zS=D6jk`j?^K8JmBH#oK?a@tu>oa_;LC=H}hf6Hd%CPVE&1@880zkB(J zp)pzxQKgv0_u%QYn=?2*FYsG~ojZRV=C96;>-s#_G5{BW>pw`QX+*~&D=1@t4(zbt z5boZnGO`U^qFJuF^w*napG8Bn%ibnhpZ6mawal`d>H5JM5no4?8iY7^w-Mt686cgU z`6d(aS+LKBYI1Rp!dbEMuUFVad)w6F1dolXsSVAt!-$9tI2{QIK1F$_${=5p79uu zhFy&w&1lOPF*(8n8D90y|Hom>6TWK^o5*~8ahrhT;e9*3B*Sqh8~Hfdxyy%eQv7J_ z+JF>`^-xfO?5Y=)j6IGCAvy}!>Wxf7ZnC2{H#%SpP4WG6M=WY_H1ME#pgDNB`z>?` z!exfIgLp1>tPoVSuyBsElWG!tVMFkUMYZe)L>xM6aUkf%QLnTgNM{6;N~{wCMi=CMwj| zSq8iLW3#~ap(sf`k=REywzCNzq$ULylza*Hd8d1e`SZRA%<#<;P>K-<+ti#|$d@hr zQ^C{q67=?-dBcB}Bqx@EvRA9y_!1E&3AbE~AC;R^oHe#ltQRa12!$frGxt~9*H5K| zp)zfJmHSXui}6#iIaWIIC9fmP!D})k^V6$Yb{pw3l}QY6q4h!fhj5DjBo`f*8DGva z+O+9*t;1R5L~M>i-}4s!^ucMSs;sHOR9Vt9duvfozV-(@1c&sMzo{!L1-g7xoAinn z{ug(z(5xq3;WpmoMpv}*8%f2f*r}tni?3BHL$cLD8`E$gB+aVr<8XCb`+AM`-cEjoh=9OU#;ayVUZ>E&>fv`-=U! zgViQb?_Ney<+*?Q$=U5wv_S%WyYk#q2L#{C3<8#5aQo3>s%VvAd9&z9brub-1okMl zEq<)YNl0L1=OZVrik8eeqldVb>`f2ZKBrjS2tgdV>{?zo_xHT;9(6-2P3b8jg)lM0 zci6UXLQVOlbI-3Q3ldsHE^R=yUCK6zBRM*TM;e0j@y{-J^ zwn{Z&ipwx`ILgXRXs23~sLJw*9yr}ziJBh(Z`$*)1xQXfruOR0g|6NR2}h;d@hTXt z&fwSyyb66M=rEJ~_0ZMRsl6(m%x3WFK3dV_Xf_Vm!I#|YHUD+3W5w-{P_uEG2ddke z`bI*7&v_Bl(11E=;pMS?!YDb4yzuvVLc+l4??w2N}B{6(uoKLJ<9`9wcTdUhkt zhU@PueyV9hP9?gY@Tnj}memK}j zOO^O`=Fp5guZ91l$#DVqyJU#)c`M^}sTtJ>c*w}6&^+@-lgg2$Ui*8GYLd-qB3s@O z`MK2MX@WsTrh)jC5wmVJp$g&83T138zJ4Fxhl?cjM>>Q%I+SsetoG zfo?}DnGA6vALX-VMse3z%qmV=T>o_zo5HcKOIToCujFLm4ql?1&_p1r7Jb1xVczL# z)6Oi*p@W(7J-+9jExhXtDmjm7 z>Lb5<))e2EbhCqNHDX~bvyBXi?5Xbw<4#)=kOK}GACS$F==`yEJ4|rTJDk=>;{Hwa8lv z4G%>e#h$JWWf>ZHE+*f9f`+Ycejv>pXadS5(+-5i8Ge;p7B3{ZGhPn^5&h(h zs=z9vj819!v{rtf#-6f1th=Q$U=Gl!yhYv|Kg4~-Zoe|P^rv-H69|Y#$VFC5XXYgU zQbf-FxcC}EDLEkKTd*s)uFwnar+Qvt+0rQ2L9Tqdml ziXu;$0~lJ+qsKJ<;{11sJSf>C0 literal 0 HcmV?d00001 diff --git a/android/assets/UnitIcons/Great Merchant.png b/android/assets/UnitIcons/Great Merchant.png new file mode 100644 index 0000000000000000000000000000000000000000..8841a7a8f71d767b2ed17f30889f157cb05a5d41 GIT binary patch literal 5368 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

c$lo7;%?J1?X2E7~s;c?Gf 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 PiZGZMnxkqBT;u--`X($S literal 0 HcmV?d00001 diff --git a/android/assets/UnitIcons/Settler.png b/android/assets/UnitIcons/Settler.png new file mode 100644 index 0000000000000000000000000000000000000000..36f6c254bebf49b5b3c1d861c3d15ede71be4440 GIT binary patch literal 1689 zcmc&#Yc!Mz82)C4F=Ga~&ALoRnq*qbpu#X34mG3ALBkr=nzSioO)Jb|_&!BK8TYj! zGAq~67?jGl+4dA_YjVpagTkPUO)J!#o%Uyc_ebw}FXuh)bKdj*c+T@)@b%fJrD>uG z0Du;Y>FKYk4?YD3t;&r-*UME!Eyjbz#;7a_^FxNJ$MTq*7y!WOe+mTf>t!PVK)bL! z-P!!hugCUh1jG{I<))_oRzlzo6EC~t-hS2L1l^l+X>HgYnA8jlM|!1~`%1-u)(15g z-AgOdgf4!G7(dVFq6;}zA-`q&hgn2$9Hv{}Pvqy*y257Ml(Xe)$+ExFT>AQ!h;QQG z+?g$RFlXhFKX*er%T+)t4%OTc*Jmv}oag*Ns$ z7qAJ%F=0djoa21nf5Wsa5kwoGbg8=`==noKXkb*D2og%v$1sPr&HxS&1tv>L7tCZ< zJj{E;VbmhB4N=Nmir$F~pbL#*H`x>|c`r#WT>c79kR7b3S3VUD%4Lhu(o)H8ge`KY zHFR2(AfXABkvIjODv=+eXdQga$Q;m0!iD=RJlulqxN|<5S?d3vTFOC;ayRuLOaOJdN#7{jrrP6 zeI;U3CYG(b>?32neXqW$cyvB)i^5*+A%?87p7_ysg(t!$M(P|Va zViP7dyOput6avOWonXxTcrNM}z#0)KbZa;6Ns8Lc|lTEwvw; zggdoe5V0p{ntA0&ABq6rpao-P@2yz4toy@@Mc2;OU`wId6Wqr55ROQuKQmZxqMU1y zj4q27{;@?=Po{LP6+`R^BW^-ec*ckQTh#HMnnoE0)J+twxj)Phfe;gc%0;3rzTn_k zjLs8_POu4VgncS-PIw|}ow;$;o`;|scHrlL8DMDOZnbXBJVXQth&@Bg4tr7G0qsB* zGz!Y!JJ3pB}~b_}UFb;&*bnm!*|(K}_MAn>dfJR>ww zwG;7hK8%+o%X)85*W}_wrVV}9`n5lzrNjw92PpP!6|htakfVJY(J~u_3c|wu_A{@VQ&-O!^;FR z@)~Kbn^Vdn71fdJ2+X6pid}0Y#n~h0p%b-A&Q#Pj6(I?zddiYRkDW}5>n)B0=MTPP zXo?|2_{z(it2t-TZ@(7d9^BQO&u>XO6L@IH}4 zW~uIdtdwHk3zjrKZ}`cmP$dd-Anx)jy=kR4!s5IjYcX5&A7JBy2HMQ z%HZX6pAk#f5#Mi8gf_$TDNhHTr2B7#e;g$HW5y+;`XU|cRpbWCw(1;|tu`*w_^2E^ z+q!kntAa1fwf{$S-$KTEI=^eDRRH#-`IDHUjm}_t20L&`SZp4UCNss946{I!_? literal 0 HcmV?d00001 diff --git a/android/assets/UnitIcons/Warrior.png b/android/assets/UnitIcons/Warrior.png new file mode 100644 index 0000000000000000000000000000000000000000..41b6fdac9b34c6066902ad8722e389fd105221d8 GIT binary patch literal 2694 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 PZ&U!Z1IE7DE-2%_Ra=vp literal 0 HcmV?d00001 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 + } }