From 96a0961130ed85b98e4d13c5a9416e51ce7ce9f5 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Fri, 11 May 2018 02:45:50 +0300 Subject: [PATCH] UI revamp to the top bar --- android/assets/jsons/Units.json | 11 ++ android/assets/skin/menuIcon.png | Bin 0 -> 35688 bytes .../com/unciv/logic/automation/Automation.kt | 3 +- .../unciv/logic/civilization/PolicyManager.kt | 1 + .../unciv/models/gamebasics/Civilization.kt | 3 +- core/src/com/unciv/ui/tilegroups/TileGroup.kt | 3 +- .../unciv/ui/utils/CameraStageBaseScreen.kt | 7 +- core/src/com/unciv/ui/utils/ImageGetter.kt | 7 +- .../com/unciv/ui/worldscreen/CivStatsTable.kt | 102 +++++++++++------- .../com/unciv/ui/worldscreen/WorldScreen.kt | 5 +- .../ui/worldscreen/WorldScreenOptionsTable.kt | 36 ++++--- .../unciv/ui/worldscreen/unit/UnitTable.kt | 2 +- 12 files changed, 114 insertions(+), 66 deletions(-) create mode 100644 android/assets/skin/menuIcon.png diff --git a/android/assets/jsons/Units.json b/android/assets/jsons/Units.json index 0ffbd5b05e..55b4029693 100644 --- a/android/assets/jsons/Units.json +++ b/android/assets/jsons/Units.json @@ -80,6 +80,17 @@ uniques:["Bonus vs City 200%","No defensive terrain bonus","Must set up to ranged attack"], hurryCostModifier:20 }, + { + name:"Swordsman", + baseDescription: "", + unitType:"Melee", + movement:2, + strength:14, + cost: 75, + requiredTech:"Iron Working", + requiredResource:"Iron", + hurryCostModifier:20 + }, { name:"Horseman", baseDescription:"", diff --git a/android/assets/skin/menuIcon.png b/android/assets/skin/menuIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..d614917560583f64811064370ec49fcff122ec83 GIT binary patch literal 35688 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 O7j_}KI#$_}M literal 0 HcmV?d00001 diff --git a/core/src/com/unciv/logic/automation/Automation.kt b/core/src/com/unciv/logic/automation/Automation.kt index 6e1ef6d195..18ad5fb383 100644 --- a/core/src/com/unciv/logic/automation/Automation.kt +++ b/core/src/com/unciv/logic/automation/Automation.kt @@ -64,7 +64,8 @@ class Automation { private fun trainCombatUnit(city: CityInfo) { val buildableUnits = city.cityConstructions.getConstructableUnits() val chosenUnit:Unit - if(city.getCenterTile().unit==null && buildableUnits.any { it.unitType==UnitType.Archery }) // this is for defence so get an archery if we can + if(city.civInfo.cities.any { it.getCenterTile().unit==null} + && buildableUnits.any { it.unitType==UnitType.Archery }) // this is for city defence so get an archery unit if we can chosenUnit = buildableUnits.filter { it.unitType==UnitType.Archery }.maxBy { it.cost }!! else chosenUnit = buildableUnits.maxBy { it.cost }!! diff --git a/core/src/com/unciv/logic/civilization/PolicyManager.kt b/core/src/com/unciv/logic/civilization/PolicyManager.kt index a055385c64..9441d98932 100644 --- a/core/src/com/unciv/logic/civilization/PolicyManager.kt +++ b/core/src/com/unciv/logic/civilization/PolicyManager.kt @@ -84,4 +84,5 @@ class PolicyManager { if (!couldAdoptPolicyBefore && canAdoptPolicy()) shouldOpenPolicyPicker = true } + } \ No newline at end of file diff --git a/core/src/com/unciv/models/gamebasics/Civilization.kt b/core/src/com/unciv/models/gamebasics/Civilization.kt index 4c450e5a1f..4a953a9907 100644 --- a/core/src/com/unciv/models/gamebasics/Civilization.kt +++ b/core/src/com/unciv/models/gamebasics/Civilization.kt @@ -2,12 +2,13 @@ package com.unciv.models.gamebasics import com.badlogic.gdx.graphics.Color import com.unciv.models.stats.INamed +import com.unciv.ui.utils.fromRGB 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) + return Color().fromRGB(RGB[0],RGB[1],RGB[2]) } lateinit var cities: List } diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 37829fbe79..78d608e2e8 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -8,6 +8,7 @@ import com.unciv.logic.map.RoadStatus import com.unciv.logic.map.TileInfo import com.unciv.ui.utils.HexMath import com.unciv.ui.utils.ImageGetter +import com.unciv.ui.utils.fromRGB open class TileGroup(var tileInfo: TileInfo) : Group() { @@ -146,7 +147,7 @@ open class TileGroup(var tileInfo: TileInfo) : Group() { private fun updateTileColor(isViewable: Boolean) { val RGB = tileInfo.getBaseTerrain().RGB!! - hexagon.color = Color(RGB[0] / 255f, RGB[1] / 255f, RGB[2] / 255f, 1f) + hexagon.color = Color().fromRGB(RGB[0], RGB[1],RGB[2]) if (!isViewable) hexagon.color = hexagon.color.lerp(Color.BLACK, 0.6f) } diff --git a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt index 7cf114786d..4b6a514307 100644 --- a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt +++ b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt @@ -102,4 +102,9 @@ fun Button.enable() { color = Color.WHITE touchable = Touchable.enabled } -fun List.getRandom(): E = if (size == 0) throw Exception() else get((Math.random() * size).toInt()) \ No newline at end of file +fun List.getRandom(): E = if (size == 0) throw Exception() else get((Math.random() * size).toInt()) + + +fun Color.fromRGB(r:Int,g:Int,b:Int): Color { + return Color(r/255f, g/255f, b/255f, 1f) +} \ No newline at end of file diff --git a/core/src/com/unciv/ui/utils/ImageGetter.kt b/core/src/com/unciv/ui/utils/ImageGetter.kt index f65464a916..78a4235ded 100644 --- a/core/src/com/unciv/ui/utils/ImageGetter.kt +++ b/core/src/com/unciv/ui/utils/ImageGetter.kt @@ -1,6 +1,7 @@ package com.unciv.ui.utils import com.badlogic.gdx.Gdx +import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.scenes.scene2d.ui.Image @@ -25,11 +26,10 @@ object ImageGetter { private fun getTextureRegion(fileName: String): TextureRegion { try { if (!textureRegionByFileName.containsKey(fileName)) { - val texture = Texture(Gdx.files.internal(fileName)) - texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear) + val texture = Texture(Gdx.files.internal(fileName),true) + texture.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.MipMapLinearLinear) textureRegionByFileName[fileName] = TextureRegion(texture) } - } catch (ex: Exception) { print("File $fileName not found!") throw ex @@ -42,4 +42,5 @@ object ImageGetter { return getImage("StatIcons/20x" + name + "5.png") } + fun getBlue() = Color(0x004085bf) } diff --git a/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt b/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt index dc3ff5be1e..32cec71d94 100644 --- a/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt +++ b/core/src/com/unciv/ui/worldscreen/CivStatsTable.kt @@ -4,66 +4,87 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.ui.Image 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.badlogic.gdx.utils.Align import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.ResourceType import com.unciv.ui.cityscreen.addClickListener import com.unciv.ui.utils.CameraStageBaseScreen import com.unciv.ui.utils.ImageGetter +import com.unciv.ui.utils.fromRGB +import kotlin.math.ceil class CivStatsTable(val screen: WorldScreen) : Table() { - private val turnsLabel = Label("Turns: 0/400", CameraStageBaseScreen.skin) - private val goldLabel = Label("Gold:",CameraStageBaseScreen.skin) - private val scienceLabel = Label("Science:",CameraStageBaseScreen.skin) - private val happinessLabel = Label("Happiness:",CameraStageBaseScreen.skin) - private val cultureLabel = Label("Culture:",CameraStageBaseScreen.skin) + val labelStyle = Label.LabelStyle(Label("",CameraStageBaseScreen.skin).style) + .apply { fontColor = Color.valueOf("f5f5f5ff") } + + private val turnsLabel = Label("Turns: 0/400", labelStyle) + private val goldLabel = Label("Gold:",labelStyle).apply { color = Color().fromRGB(225,217,71) } + private val scienceLabel = Label("Science:",labelStyle).apply { color = Color().fromRGB(78,140,151) } + private val happinessLabel = Label("Happiness:",labelStyle).apply { color = Color().fromRGB(92,194,77) } + private val cultureLabel = Label("Culture:",labelStyle).apply { color = Color().fromRGB(200,60,200) } private val resourceLabels = HashMap() private val resourceImages = HashMap() init{ - val civBackground = ImageGetter.getDrawable("skin/civTableBackground.png") - background = civBackground.tint(Color(0x004085e0)) + background = ImageGetter.getDrawable("skin/whiteDot.png").tint(ImageGetter.getBlue().lerp(Color.BLACK,0.5f)) + //add(Table().apply { + add(getStatsTable()).row() + add(getResourceTable()) +// pack() +// }) + + pad(5f) + pack() + addActor(getMenuButton()) // needs to be after pack + } + + private fun getResourceTable(): Table { val resourceTable = Table() resourceTable.defaults().pad(5f) val revealedStrategicResources = GameBasics.TileResources.values - .filter { it.resourceType== ResourceType.Strategic} // && civInfo.tech.isResearched(it.revealedBy!!) } - for(resource in revealedStrategicResources){ + .filter { it.resourceType == ResourceType.Strategic } // && civInfo.tech.isResearched(it.revealedBy!!) } + for (resource in revealedStrategicResources) { val fileName = "ResourceIcons/${resource.name}_(Civ5).png" val resourceImage = ImageGetter.getImage(fileName) - resourceImages.put(resource.name,resourceImage) + resourceImages.put(resource.name, resourceImage) resourceTable.add(resourceImage).size(20f) - val resourceLabel = Label("0",CameraStageBaseScreen.skin) + val resourceLabel = Label("0", labelStyle) resourceLabels.put(resource.name, resourceLabel) resourceTable.add(resourceLabel) } resourceTable.pack() - add(resourceTable).row() - - - val statsTable = Table() - statsTable.defaults().padRight(20f).padBottom(10f) - statsTable.add(getMenuButton()) - statsTable.add(turnsLabel) - statsTable.add(goldLabel) - statsTable.add(scienceLabel.apply { setAlignment(Align.center) }) - statsTable.add(happinessLabel.apply { setAlignment(Align.center) }) - statsTable.add(cultureLabel.apply { setAlignment(Align.center) }) - - statsTable.pack() - statsTable.width = screen.stage.width - 20 - add(statsTable) - pack() - width = screen.stage.width - 20 + return resourceTable } - internal fun getMenuButton(): TextButton { - val menuButton = TextButton("Menu", CameraStageBaseScreen.skin) + private fun getStatsTable(): Table { + val statsTable = Table() + statsTable.defaults().pad(3f)//.align(Align.top) + statsTable.add(turnsLabel).padRight(20f) + statsTable.add(goldLabel) + statsTable.add(ImageGetter.getStatIcon("Gold")).padRight(20f) + statsTable.add(scienceLabel) //.apply { setAlignment(Align.center) }).align(Align.top) + statsTable.add(ImageGetter.getStatIcon("Science")).padRight(20f) + + statsTable.add(ImageGetter.getStatIcon("Happiness")) + statsTable.add(happinessLabel).padRight(20f)//.apply { setAlignment(Align.center) }).align(Align.top) + + statsTable.add(cultureLabel)//.apply { setAlignment(Align.center) }).align(Align.top) + statsTable.add(ImageGetter.getStatIcon("Culture")) + statsTable.pack() + statsTable.width = screen.stage.width - 20 + return statsTable + } + + internal fun getMenuButton(): Image { + val menuButton = ImageGetter.getImage("skin/menuIcon.png") + .apply { setSize(50f,50f) } + menuButton.color = Color.WHITE menuButton.addClickListener { screen.optionsTable.isVisible = !screen.optionsTable.isVisible } + menuButton.y = this.height/2-menuButton.height/2 + menuButton.x = menuButton.y return menuButton } @@ -87,23 +108,22 @@ class CivStatsTable(val screen: WorldScreen) : Table() { val nextTurnStats = civInfo.getStatsForNextTurn() val goldPerTurn = "(" + (if (nextTurnStats.gold > 0) "+" else "") + Math.round(nextTurnStats.gold) + ")" - goldLabel.setText("Gold: " + Math.round(civInfo.gold.toFloat()) + goldPerTurn) + goldLabel.setText("" + Math.round(civInfo.gold.toFloat()) + goldPerTurn) - scienceLabel.setText("Science: +" + Math.round(nextTurnStats.science) - + "\r\n" + civInfo.tech.getAmountResearchedText()) + scienceLabel.setText("+" + Math.round(nextTurnStats.science)) - var happinessText = "Happiness: " + civInfo.happiness+"\r\n" + var happinessText = civInfo.happiness.toString() if (civInfo.goldenAges.isGoldenAge()) - happinessText += "GOLDEN AGE (${civInfo.goldenAges.turnsLeftForCurrentGoldenAge})" + happinessText += " GOLDEN AGE (${civInfo.goldenAges.turnsLeftForCurrentGoldenAge})" else happinessText += ("(" + civInfo.goldenAges.storedHappiness + "/" + civInfo.goldenAges.happinessRequiredForNextGoldenAge() + ")") - happinessLabel.setText(happinessText) - val cultureString = "Culture: " + "+" + Math.round(nextTurnStats.culture) + "\r\n" + - "(" + civInfo.policies.storedCulture + "/" + civInfo.policies.getCultureNeededForNextPolicy() + ")" - + val turnsToNextPolicy = (civInfo.policies.getCultureNeededForNextPolicy() - civInfo.policies.storedCulture) / nextTurnStats.culture + var cultureString = "+" + Math.round(nextTurnStats.culture) + if(turnsToNextPolicy>0) cultureString+= " ("+ ceil(turnsToNextPolicy)+")" + else cultureString += " (!)" cultureLabel.setText(cultureString) } diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt index dd481f5baf..ee1c37c8de 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt @@ -35,7 +35,10 @@ class WorldScreen : CameraStageBaseScreen() { unitTable.setPosition(5f, 5f) tileMapHolder = TileMapHolder(this, gameInfo.tileMap, civInfo) tileInfoTable = TileInfoTable(this, civInfo) - civTable.setPosition(10f, stage.height - civTable.height - 10f ) + + civTable.setPosition(0f, stage.height - civTable.height) + civTable.width = stage.width + nextTurnButton.setPosition(stage.width - nextTurnButton.width - 10f, civTable.y - nextTurnButton.height - 10f) notificationsScroll = NotificationsScroll(gameInfo.notifications, this) diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreenOptionsTable.kt b/core/src/com/unciv/ui/worldscreen/WorldScreenOptionsTable.kt index 9e6aac26dc..e66edd7a10 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreenOptionsTable.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreenOptionsTable.kt @@ -16,51 +16,55 @@ import com.unciv.ui.utils.ImageGetter class WorldScreenOptionsTable internal constructor(worldScreen: WorldScreen, private val civInfo: CivilizationInfo) : Table() { init { - val tileTableBackground = ImageGetter.getDrawable("skin/tileTableBackground.png") + val tileTableBackground = ImageGetter.getDrawable("skin/whiteDot.png") .tint(Color(0x004085bf)) background = tileTableBackground isVisible = false - val openCivilopediaButton = TextButton("Civilopedia", CameraStageBaseScreen.skin) + pad(20f) + defaults().pad(5f) + + val openCivilopediaButton = TextButton("Civilopedia", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue(); background=null } openCivilopediaButton.addClickListener { worldScreen.game.screen = CivilopediaScreen() isVisible = false } - add(openCivilopediaButton).pad(10f).row() + add(openCivilopediaButton).row() - val loadGameButton = TextButton("Load game", CameraStageBaseScreen.skin) + val loadGameButton = TextButton("Load game", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() } loadGameButton .addClickListener { worldScreen.game.screen = LoadScreen() isVisible=false } - add(loadGameButton ).pad(10f).row() + add(loadGameButton ).row() - val saveGameButton = TextButton("Save game", CameraStageBaseScreen.skin) + val saveGameButton = TextButton("Save game", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() } saveGameButton .addClickListener { worldScreen.game.screen = SaveScreen() isVisible=false } - add(saveGameButton ).pad(10f).row() - val startNewGameButton = TextButton("Start new game", CameraStageBaseScreen.skin) - startNewGameButton.addClickListener { worldScreen.game.startNewGame(true) } - add(startNewGameButton).pad(10f).row() + add(saveGameButton ).row() - val openVictoryScreen = TextButton("Victory status", CameraStageBaseScreen.skin) + val startNewGameButton = TextButton("Start new game", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() } + startNewGameButton.addClickListener { worldScreen.game.startNewGame(true) } + add(startNewGameButton).row() + + val openVictoryScreen = TextButton("Victory status", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() } openVictoryScreen.addClickListener { worldScreen.game.screen = VictoryScreen() } - add(openVictoryScreen).pad(10f).row() + add(openVictoryScreen).row() - val openPolicyPickerScreen = TextButton("Social Policies", CameraStageBaseScreen.skin) + val openPolicyPickerScreen = TextButton("Social Policies", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() } openPolicyPickerScreen.addClickListener { worldScreen.game.screen = PolicyPickerScreen(this@WorldScreenOptionsTable.civInfo) } - add(openPolicyPickerScreen).pad(10f).row() + add(openPolicyPickerScreen).row() - val closeButton = TextButton("Close", CameraStageBaseScreen.skin) + val closeButton = TextButton("Close", CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() } closeButton.addClickListener { isVisible = false } - add(closeButton).pad(10f) + add(closeButton) pack() // Needed to show the background. setPosition(worldScreen.stage.width / 2 - width / 2, diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitTable.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitTable.kt index a55a7e7e71..0c0514e8ca 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitTable.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitTable.kt @@ -22,7 +22,7 @@ class UnitTable(val worldScreen: WorldScreen) : Table(){ val tileTableBackground = ImageGetter.getDrawable("skin/tileTableBackground.png") .tint(Color(0x004085bf)) pad(20f) - background = tileTableBackground + //background = tileTableBackground add(unitLabel).pad(10f) add(unitActionsTable) row()