diff --git a/core/src/com/unciv/ui/cityscreen/CitizenManagementTable.kt b/core/src/com/unciv/ui/cityscreen/CitizenManagementTable.kt index 442e873e4c..3f1fb396bc 100644 --- a/core/src/com/unciv/ui/cityscreen/CitizenManagementTable.kt +++ b/core/src/com/unciv/ui/cityscreen/CitizenManagementTable.kt @@ -34,7 +34,8 @@ class CitizenManagementTable(val cityScreen: CityScreen) : Table() { val avoidCell = Table() avoidCell.touchable = Touchable.enabled avoidCell.add(avoidLabel).pad(5f) - avoidCell.onClick { city.avoidGrowth = !city.avoidGrowth; city.reassignPopulation(); cityScreen.update() } + if (cityScreen.canChangeState) + avoidCell.onClick { city.avoidGrowth = !city.avoidGrowth; city.reassignPopulation(); cityScreen.update() } avoidCell.background = ImageGetter.getBackground(if (city.avoidGrowth) colorSelected else colorButton) innerTable.add(avoidCell).colspan(2).growX().pad(3f) @@ -47,7 +48,8 @@ class CitizenManagementTable(val cityScreen: CityScreen) : Table() { val cell = Table() cell.touchable = Touchable.enabled cell.add(label).pad(5f) - cell.onClick { city.cityAIFocus = focus; city.reassignPopulation(); cityScreen.update() } + if (cityScreen.canChangeState) + cell.onClick { city.cityAIFocus = focus; city.reassignPopulation(); cityScreen.update() } cell.background = ImageGetter.getBackground(if (city.cityAIFocus == focus) colorSelected else colorButton) innerTable.add(cell).growX().pad(3f) diff --git a/core/src/com/unciv/ui/cityscreen/CityScreen.kt b/core/src/com/unciv/ui/cityscreen/CityScreen.kt index bf724b92d3..1518c49390 100644 --- a/core/src/com/unciv/ui/cityscreen/CityScreen.kt +++ b/core/src/com/unciv/ui/cityscreen/CityScreen.kt @@ -123,6 +123,7 @@ class CityScreen( resetCitizensButton.onClick { city.reassignPopulation(resetLocked = true); update() } resetCitizensButtonHolder.add(resetCitizensButton) resetCitizensButtonHolder.pack() + if (!canChangeState) resetCitizensButton.disable() stage.addActor(resetCitizensButtonHolder) val citizenManagementButton = "Citizen Management".toTextButton() citizenManagementButton.labelCell.pad(5f) @@ -131,6 +132,7 @@ class CityScreen( citizenManagementVisible = true update() } + if (!canChangeState) citizenManagementButton.disable() citizenManagementButtonHolder.add(citizenManagementButton) citizenManagementButtonHolder.pack() stage.addActor(citizenManagementButtonHolder) @@ -193,7 +195,7 @@ class CityScreen( citizenManagementButtonHolder.isVisible = !citizenManagementVisible citizenManagementButtonHolder.setPosition(stage.width - posFromEdge, posFromEdge + resetCitizensButtonHolder.y + resetCitizensButtonHolder.height + 10f, Align.bottomRight) - + // In portrait mode only: calculate already occupied horizontal space val rightMargin = when { !isPortrait() -> 0f diff --git a/core/src/com/unciv/ui/cityscreen/CityStatsTable.kt b/core/src/com/unciv/ui/cityscreen/CityStatsTable.kt index 206b91d996..6609ad0a8a 100644 --- a/core/src/com/unciv/ui/cityscreen/CityStatsTable.kt +++ b/core/src/com/unciv/ui/cityscreen/CityStatsTable.kt @@ -42,16 +42,18 @@ class CityStatsTable(val cityScreen: CityScreen): Table() { val icon = Table() if (cityInfo.cityAIFocus.stat == stat) { icon.add(ImageGetter.getStatIcon(stat.name).surroundWithCircle(27f, false, color = selected)) - icon.onClick { - cityInfo.cityAIFocus = CityFocus.NoFocus - cityInfo.reassignPopulation(); cityScreen.update() - } + if (cityScreen.canChangeState) + icon.onClick { + cityInfo.cityAIFocus = CityFocus.NoFocus + cityInfo.reassignPopulation(); cityScreen.update() + } } else { icon.add(ImageGetter.getStatIcon(stat.name).surroundWithCircle(27f, false, color = Color.CLEAR)) - icon.onClick { - cityInfo.cityAIFocus = cityInfo.cityAIFocus.safeValueOf(stat) - cityInfo.reassignPopulation(); cityScreen.update() - } + if (cityScreen.canChangeState) + icon.onClick { + cityInfo.cityAIFocus = cityInfo.cityAIFocus.safeValueOf(stat) + cityInfo.reassignPopulation(); cityScreen.update() + } } miniStatsTable.add(icon).size(27f).padRight(5f) val valueToDisplay = if (stat == Stat.Happiness) cityInfo.cityStats.happinessList.values.sum() else amount @@ -74,7 +76,8 @@ class CityStatsTable(val cityScreen: CityScreen): Table() { val unassignedPopString = "{Unassigned population}: ".tr() + cityInfo.population.getFreePopulation().toString() + "/" + cityInfo.population.population val unassignedPopLabel = unassignedPopString.toLabel() - unassignedPopLabel.onClick { cityInfo.reassignPopulation(); cityScreen.update() } + if (cityScreen.canChangeState) + unassignedPopLabel.onClick { cityInfo.reassignPopulation(); cityScreen.update() } var turnsToExpansionString = if (cityInfo.cityStats.currentCityStats.culture > 0 && cityInfo.expansion.getChoosableTiles().any()) { diff --git a/core/src/com/unciv/ui/cityscreen/SpecialistAllocationTable.kt b/core/src/com/unciv/ui/cityscreen/SpecialistAllocationTable.kt index ed86e5c01a..9572d46eb6 100644 --- a/core/src/com/unciv/ui/cityscreen/SpecialistAllocationTable.kt +++ b/core/src/com/unciv/ui/cityscreen/SpecialistAllocationTable.kt @@ -18,15 +18,21 @@ class SpecialistAllocationTable(val cityScreen: CityScreen) : Table(BaseScreen.s // Auto/Manual Specialists Toggle // Color of "color" coming from Skin.json that's loaded into BaseScreen // 5 columns: unassignButton, AllocationTable, assignButton, SeparatorVertical, SpecialistsStatsTabe - if (cityInfo.manualSpecialists) { - val manualSpecialists = "Manual Specialists".toLabel().addBorder(5f, BaseScreen.skin.get("color", Color::class.java)) - manualSpecialists.onClick { cityInfo.manualSpecialists = false; cityInfo.reassignPopulation(); cityScreen.update() } - add(manualSpecialists).colspan(5).row() - } else { - val autoSpecialists = "Auto Specialists".toLabel().addBorder(5f, BaseScreen.skin.get("color", Color::class.java)) - autoSpecialists.onClick { cityInfo.manualSpecialists = true; update() } - add(autoSpecialists).colspan(5).row() - } + if (cityScreen.canChangeState) + if (cityInfo.manualSpecialists) { + val manualSpecialists = "Manual Specialists".toLabel() + .addBorder(5f, BaseScreen.skin.get("color", Color::class.java)) + manualSpecialists.onClick { + cityInfo.manualSpecialists = false + cityInfo.reassignPopulation(); cityScreen.update() + } + add(manualSpecialists).colspan(5).row() + } else { + val autoSpecialists = "Auto Specialists".toLabel() + .addBorder(5f, BaseScreen.skin.get("color", Color::class.java)) + autoSpecialists.onClick { cityInfo.manualSpecialists = true; update() } + add(autoSpecialists).colspan(5).row() + } for ((specialistName, maxSpecialists) in cityInfo.population.getMaxSpecialists()) { if (!cityInfo.getRuleset().specialists.containsKey(specialistName)) // specialist doesn't exist in this ruleset, probably a mod continue