From 0e5b2f0db0c880fec5bebe67e69851fea5031e40 Mon Sep 17 00:00:00 2001 From: jnecus Date: Sun, 13 Dec 2020 07:31:37 +0000 Subject: [PATCH] Display tile yields (#3322) * Show tile yields functionality (WIP) * Toggle yields (WIP) * Show Yields (WIP) * Show tile yields WIP * showTileYields (WIP) * tidying code * Display tile yields (WIP) * Show tile yields (WIP) * Update CityTileGroup.kt --- .../com/unciv/models/metadata/GameSettings.kt | 1 + .../com/unciv/ui/cityscreen/CityTileGroup.kt | 2 +- core/src/com/unciv/ui/tilegroups/TileGroup.kt | 9 ++++-- .../com/unciv/ui/tilegroups/TileGroupIcons.kt | 32 ++++++++++++++++--- .../com/unciv/ui/tilegroups/WorldTileGroup.kt | 2 +- .../ui/worldscreen/mainmenu/OptionsPopup.kt | 5 ++- 6 files changed, 38 insertions(+), 13 deletions(-) diff --git a/core/src/com/unciv/models/metadata/GameSettings.kt b/core/src/com/unciv/models/metadata/GameSettings.kt index 7901e0d4e9..923a195265 100644 --- a/core/src/com/unciv/models/metadata/GameSettings.kt +++ b/core/src/com/unciv/models/metadata/GameSettings.kt @@ -9,6 +9,7 @@ data class WindowState (val width:Int=0, val height:Int=0) class GameSettings { var showWorkedTiles: Boolean = false var showResourcesAndImprovements: Boolean = true + var showTileYields: Boolean = true // JN var checkForDueUnits: Boolean = true var singleTapMove: Boolean = false var language: String = "English" diff --git a/core/src/com/unciv/ui/cityscreen/CityTileGroup.kt b/core/src/com/unciv/ui/cityscreen/CityTileGroup.kt index e61de4deba..0e3425896b 100644 --- a/core/src/com/unciv/ui/cityscreen/CityTileGroup.kt +++ b/core/src/com/unciv/ui/cityscreen/CityTileGroup.kt @@ -26,7 +26,7 @@ class CityTileGroup(private val city: CityInfo, tileInfo: TileInfo, tileSetStrin } fun update() { - super.update(city.civInfo, true) + super.update(city.civInfo, true, false) // this needs to happen on update, because we can buy tiles, which changes the definition of the bought tiles... when { diff --git a/core/src/com/unciv/ui/tilegroups/TileGroup.kt b/core/src/com/unciv/ui/tilegroups/TileGroup.kt index 99e6773381..e32f3377a3 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroup.kt @@ -13,6 +13,7 @@ import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.map.RoadStatus import com.unciv.logic.map.TileInfo import com.unciv.models.ruleset.unit.UnitType +import com.unciv.ui.cityscreen.YieldGroup import com.unciv.ui.utils.ImageGetter import com.unciv.ui.utils.center import com.unciv.ui.utils.centerX @@ -75,6 +76,8 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) } val miscLayerGroup = MiscLayerGroupClass().apply { isTransform = false; setSize(groupSize, groupSize) } + var tileYieldGroup = YieldGroup() // JN + var resourceImage: Actor? = null var resource: String? = null private val roadImages = HashMap() @@ -336,7 +339,7 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) || viewingCiv.exploredTiles.contains(tileInfo.position) || viewingCiv.isSpectator() - open fun update(viewingCiv: CivilizationInfo? = null, showResourcesAndImprovements: Boolean = true) { + open fun update(viewingCiv: CivilizationInfo? = null, showResourcesAndImprovements: Boolean = true, showTileYields: Boolean = true) { fun clearUnexploredTiles() { updateTileImage(null) @@ -347,7 +350,7 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) if (borderImages.isNotEmpty()) clearBorders() - icons.update(false, false, false, null) + icons.update(false,false ,false, false, null) fogImage.isVisible = true } @@ -372,7 +375,7 @@ open class TileGroup(var tileInfo: TileInfo, var tileSetStrings:TileSetStrings) updatePixelMilitaryUnit(tileIsViewable && showMilitaryUnit) updatePixelCivilianUnit(tileIsViewable) - icons.update(showResourcesAndImprovements, tileIsViewable, showMilitaryUnit,viewingCiv) + icons.update(showResourcesAndImprovements,showTileYields, tileIsViewable, showMilitaryUnit,viewingCiv) updateCityImage() updateNaturalWonderImage() diff --git a/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt b/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt index 6fc6e02002..e5366410f8 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt @@ -8,10 +8,7 @@ import com.badlogic.gdx.utils.Align import com.unciv.UncivGame import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.map.MapUnit -import com.unciv.ui.utils.ImageGetter -import com.unciv.ui.utils.UnitGroup -import com.unciv.ui.utils.center -import com.unciv.ui.utils.toLabel +import com.unciv.ui.utils.* /** Helper class for TileGroup, which was getting too full */ class TileGroupIcons(val tileGroup: TileGroup){ @@ -22,10 +19,12 @@ class TileGroupIcons(val tileGroup: TileGroup){ var civilianUnitIcon: UnitGroup? = null var militaryUnitIcon: UnitGroup? = null - fun update(showResourcesAndImprovements: Boolean, tileIsViewable: Boolean, showMilitaryUnit: Boolean, viewingCiv:CivilizationInfo?) { + fun update(showResourcesAndImprovements: Boolean, showTileYields: Boolean, tileIsViewable: Boolean, showMilitaryUnit: Boolean, viewingCiv:CivilizationInfo?) { updateResourceIcon(showResourcesAndImprovements) updateImprovementIcon(showResourcesAndImprovements) + updateYieldIcon(showTileYields) // JN + civilianUnitIcon = newUnitIcon(tileGroup.tileInfo.civilianUnit, civilianUnitIcon, tileIsViewable, -20f, viewingCiv) militaryUnitIcon = newUnitIcon(tileGroup.tileInfo.militaryUnit, militaryUnitIcon, @@ -117,6 +116,29 @@ class TileGroupIcons(val tileGroup: TileGroup){ } } + // JN updating display of tile yields + private fun updateYieldIcon(showTileYields: Boolean) { + + // Hiding yield icons (in order to update) + tileGroup.tileYieldGroup.isVisible = false + + + if (showTileYields) { + // Setting up YieldGroup Icon + tileGroup.tileYieldGroup.setStats(tileGroup.tileInfo.getTileStats(CivilizationInfo())) + tileGroup.tileYieldGroup.setOrigin(Align.center) + tileGroup.tileYieldGroup.setScale(0.7f) + tileGroup.tileYieldGroup.toFront() + tileGroup.tileYieldGroup.centerX(tileGroup) + tileGroup.tileYieldGroup.y = tileGroup.height * 0.25f - tileGroup.tileYieldGroup.height / 2 + tileGroup.tileYieldGroup.isVisible = true + + // Adding YieldGroup to miscLayerGroup + tileGroup.miscLayerGroup.addActor(tileGroup.tileYieldGroup) + } + } + + fun updateResourceIcon(showResourcesAndImprovements: Boolean) { if (tileGroup.resource != tileGroup.tileInfo.resource) { tileGroup.resource = tileGroup.tileInfo.resource diff --git a/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt b/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt index e411caba15..47581e263e 100644 --- a/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt +++ b/core/src/com/unciv/ui/tilegroups/WorldTileGroup.kt @@ -38,7 +38,7 @@ class WorldTileGroup(internal val worldScreen: WorldScreen, tileInfo: TileInfo, // remove city buttons in unexplored tiles during spectating/fog of war updateCityButton(null, showEntireMap) - super.update(viewingCiv, UncivGame.Current.settings.showResourcesAndImprovements) + super.update(viewingCiv, UncivGame.Current.settings.showResourcesAndImprovements, UncivGame.Current.settings.showTileYields) } diff --git a/core/src/com/unciv/ui/worldscreen/mainmenu/OptionsPopup.kt b/core/src/com/unciv/ui/worldscreen/mainmenu/OptionsPopup.kt index 94dbadd52c..c54932abe7 100644 --- a/core/src/com/unciv/ui/worldscreen/mainmenu/OptionsPopup.kt +++ b/core/src/com/unciv/ui/worldscreen/mainmenu/OptionsPopup.kt @@ -83,9 +83,8 @@ class OptionsPopup(val previousScreen:CameraStageBaseScreen) : Popup(previousScr addHeader("Display options") addYesNoRow ("Show worked tiles", settings.showWorkedTiles, true) { settings.showWorkedTiles = it } - addYesNoRow ("Show resources and improvements", settings.showResourcesAndImprovements, true) { - settings.showResourcesAndImprovements = it - } + addYesNoRow ("Show resources and improvements", settings.showResourcesAndImprovements, true) { settings.showResourcesAndImprovements = it } + addYesNoRow ("Show tile yields", settings.showTileYields, true) { settings.showTileYields = it } // JN addYesNoRow ("Show tutorials", settings.showTutorials, true) {settings.showTutorials = it } addYesNoRow ("Show minimap", settings.showMinimap, true) { settings.showMinimap = it } addYesNoRow ("Show pixel units", settings.showPixelUnits, true) { settings.showPixelUnits = it }