Added tech icons for ancient & classical technologies

This commit is contained in:
Yair Morgenstern 2018-09-30 00:24:09 +03:00
parent 833760ab32
commit 8c7e8437ec
25 changed files with 423 additions and 241 deletions

View file

@ -200,4 +200,28 @@ All the following are from [the Noun Project](https://thenounproject.com) licenc
* [Crosshair](https://thenounproject.com/search/?q=crosshairs&i=916030) By Bakunetsu Kaito
* [City](https://thenounproject.com/search/?q=city&i=571332) By Felix Westphal
* [Fire](https://thenounproject.com/search/?q=Fire&i=96564) By Lloyd Humphreys
* [Sleep](https://thenounproject.com/search/?q=sleep&i=1760085) By Saeful Muslim
* [Sleep](https://thenounproject.com/search/?q=sleep&i=1760085) By Saeful Muslim
## Technologies
### Ancient
* [Agriculture](https://thenounproject.com/term/agriculture/4221/) By OCHA Visual Information Unit
* [Jug](https://thenounproject.com/term/jug/869999/) By Vladimir Belochkin
* [Archery](https://thenounproject.com/term/archery/213836/) By icon 54
* [Mining](https://thenounproject.com/term/mining/1400713/) By art shop
* [Sundial](https://thenounproject.com/term/sundial/239627/) By Bonegolem
* [Cuneiform](https://thenounproject.com/term/cuneiform/86669/) By Michael Wohlwend
* [Trap](https://thenounproject.com/term/trap/130049/) By Sergey Demushkin
* [innovative](https://thenounproject.com/term/innovative/30219/) By Matt Brooks
* [Bricks](https://thenounproject.com/term/bricks/1018659/) By Vaibhav Radhakrishnan
* [Mallet](https://thenounproject.com/term/mallet/1306669/) By Ben Avery
## Classical
* [Horse Riding](https://thenounproject.com/term/horse-riding/583093/) By Hea Poh Lin
* [Abacus](https://thenounproject.com/term/abacus/1943303/) By Yo! Baba
* [Arch](https://thenounproject.com/term/arch/1174168/) By Andrejs Kirma
* [Brain](https://thenounproject.com/term/brain/64073/) By Tony Gines
* [Coins](https://thenounproject.com/term/coins/1806100/) By Adrien Coquet
* [Engineering Blueprint](https://thenounproject.com/term/engineering-blueprint/1588543/) By Sachin Modgekar
* [Metalworking](https://thenounproject.com/term/metalworking/1561383/) By Symbolon

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 767 KiB

After

Width:  |  Height:  |  Size: 802 KiB

View file

@ -21,8 +21,8 @@ android {
applicationId "com.unciv.game"
minSdkVersion 14
targetSdkVersion 26
versionCode 140
versionName "2.8.8"
versionCode 141
versionName "2.8.9"
}
buildTypes {
release {

View file

@ -2,21 +2,18 @@ package com.unciv.ui.pickerscreens
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.unciv.UnCivGame
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.civilization.TechManager
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.tech.Technology
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.onClick
import com.unciv.ui.utils.disable
import com.unciv.ui.utils.tr
import com.unciv.ui.utils.*
import java.util.*
class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen() {
private var techNameToButton = HashMap<String, TextButton>()
private var techNameToButton = HashMap<String, TechButton>()
private var isFreeTechPick: Boolean = false
private var selectedTech: Technology? = null
private var civTech: TechManager = civInfo.tech
@ -25,13 +22,31 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen()
// All these are to counter performance problems when updating buttons for all techs.
private var researchableTechs = GameBasics.Technologies.keys
.filter { civTech.canBeResearched(it) }.toHashSet()
private val lightBlue = Color.BLUE.cpy().lerp(Color.WHITE, 0.3f)
private val currentTechColor = colorFromRGB(7,46,43)
private val researchedTechColor = colorFromRGB(133,112,39)
private val researchableTechColor = colorFromRGB(28,170,0)
private val queuedTechColor = colorFromRGB(39,114,154)
private val turnsToTech = GameBasics.Technologies.values.associateBy ({ it.name },{civTech.turnsToTech(it.name)})
constructor(freeTechPick: Boolean, civInfo: CivilizationInfo) : this(civInfo) {
isFreeTechPick = freeTechPick
}
class TechButton(techName:String) : Table(skin) {
val text=Label("",skin).setFontColor(Color.WHITE)
init {
defaults().pad(10f)
background = ImageGetter.getDrawable("OtherIcons/civTableBackground.png")
if(ImageGetter.techIconExists(techName))
add(ImageGetter.getTechIcon(techName)).size(40f)
add(text)
pack()
}
}
init {
onBackButtonClicked { UnCivGame.Current.setWorldScreen(); dispose() }
@ -57,7 +72,8 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen()
topTable.add() // empty cell
else {
val TB = TextButton("", CameraStageBaseScreen.skin)
val TB = TechButton(tech.name)
techNameToButton[tech.name] = TB
TB.onClick {
selectTechnology(tech)
@ -91,9 +107,10 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen()
for (techName in techNameToButton.keys) {
val TB = techNameToButton[techName]!!
when {
civTech.isResearched(techName) && techName!="Future Tech" -> TB.color = Color.GREEN
techsToResearch.contains(techName) -> TB.color = lightBlue
researchableTechs.contains(techName) -> TB.color = Color.WHITE
civTech.isResearched(techName) && techName!="Future Tech" -> TB.color = researchedTechColor
techsToResearch.isNotEmpty() && techsToResearch.first() == techName -> TB.color = currentTechColor
techsToResearch.contains(techName) -> TB.color = queuedTechColor
researchableTechs.contains(techName) -> TB.color = researchableTechColor
else -> TB.color = Color.BLACK
}
@ -110,7 +127,7 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen()
if (!civTech.isResearched(techName) || techName=="Future Tech")
text += "\r\n" + turnsToTech[techName] + " {turns}".tr()
TB.setText(text)
TB.text.setText(text)
}
}

View file

@ -52,6 +52,14 @@ object ImageGetter {
}
}
fun techIconExists(techName:String): Boolean {
return atlas.findRegion("TechIcons/$techName")!=null
}
fun getTechIcon(techName: String): Image {
return getImage("TechIcons/$techName")
}
fun getStatIcon(statName: String): Image {
return ImageGetter.getImage("StatIcons/$statName")
.apply { setSize(20f,20f)}

View file

@ -3,6 +3,7 @@ package com.unciv.ui.worldscreen
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.math.Vector2
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.UnCivGame
@ -30,7 +31,7 @@ class WorldScreen : CameraStageBaseScreen() {
val bottomBar = WorldScreenBottomBar(this)
val unitActionsTable = UnitActionsTable(this)
private val techButton = TextButton("", CameraStageBaseScreen.skin).apply { color= Color.BLUE }
private val techButton = Table().apply { background=ImageGetter.getDrawable("OtherIcons/civTableBackground.png").tint(colorFromRGB(7,46,43)); defaults().pad(10f) }
val diplomacyButtonWrapper = Table()
private val nextTurnButton = createNextTurnButton()
@ -160,11 +161,17 @@ class WorldScreen : CameraStageBaseScreen() {
private fun updateTechButton(civInfo: CivilizationInfo) {
techButton.isVisible = civInfo.cities.isNotEmpty()
techButton.clearChildren()
if (civInfo.tech.currentTechnology() == null)
techButton.setText("{Pick a tech}!".tr())
else
techButton.setText(civInfo.tech.currentTechnology()!!.tr() + "\r\n"
+ civInfo.tech.turnsToTech(civInfo.tech.currentTechnology()!!) + " {turns}".tr())
techButton.add(Label("{Pick a tech}!".tr(),skin).setFontColor(Color.WHITE).setFont(22))
else {
val tech = civInfo.tech.currentTechnology()!!
if(ImageGetter.techIconExists(tech))
techButton.add(ImageGetter.getTechIcon(tech)).size(30f)
techButton.add(Label(tech.tr() + "\r\n"
+ civInfo.tech.turnsToTech(tech) + " {turns}".tr(),skin)
.setFontColor(Color.WHITE).setFont(22))
}
techButton.setSize(techButton.prefWidth, techButton.prefHeight)
techButton.setPosition(10f, topBar.y - techButton.height - 5f)