mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-26 23:58:43 +07:00
Fix options screen leaving next turn button disabled (#2400)
* Options Screen: Next Turn Button was left disabled if... any setting with 'update worldscreen' on was used * Options Screen: Unit idle check has visible consequences
This commit is contained in:
@ -56,4 +56,6 @@ object Constants {
|
|||||||
|
|
||||||
const val cancelImprovementOrder = "Cancel improvement order"
|
const val cancelImprovementOrder = "Cancel improvement order"
|
||||||
const val tutorialPopupNamePrefix = "Tutorial: "
|
const val tutorialPopupNamePrefix = "Tutorial: "
|
||||||
|
|
||||||
|
const val close = "Close"
|
||||||
}
|
}
|
@ -93,7 +93,7 @@ class CivilopediaScreen(ruleset: Ruleset) : CameraStageBaseScreen() {
|
|||||||
buttonTable.width = stage.width
|
buttonTable.width = stage.width
|
||||||
val buttonTableScroll = ScrollPane(buttonTable)
|
val buttonTableScroll = ScrollPane(buttonTable)
|
||||||
|
|
||||||
val goToGameButton = TextButton("Close".tr(), skin)
|
val goToGameButton = TextButton(Constants.close.tr(), skin)
|
||||||
goToGameButton.onClick {
|
goToGameButton.onClick {
|
||||||
game.setWorldScreen()
|
game.setWorldScreen()
|
||||||
dispose()
|
dispose()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.unciv.ui
|
package com.unciv.ui
|
||||||
|
|
||||||
import com.unciv.ui.utils.AutoScrollPane as ScrollPane
|
import com.unciv.ui.utils.AutoScrollPane as ScrollPane
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
@ -19,6 +19,7 @@ import com.unciv.models.translations.tr
|
|||||||
import com.unciv.ui.cityscreen.CityScreen
|
import com.unciv.ui.cityscreen.CityScreen
|
||||||
import com.unciv.ui.pickerscreens.PromotionPickerScreen
|
import com.unciv.ui.pickerscreens.PromotionPickerScreen
|
||||||
import com.unciv.ui.utils.*
|
import com.unciv.ui.utils.*
|
||||||
|
import com.unciv.Constants
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
import kotlin.math.*
|
import kotlin.math.*
|
||||||
|
|
||||||
@ -29,7 +30,7 @@ class EmpireOverviewScreen(private val viewingPlayer:CivilizationInfo) : CameraS
|
|||||||
init {
|
init {
|
||||||
onBackButtonClicked { UncivGame.Current.setWorldScreen() }
|
onBackButtonClicked { UncivGame.Current.setWorldScreen() }
|
||||||
|
|
||||||
val closeButton = TextButton("Close".tr(), skin)
|
val closeButton = TextButton(Constants.close.tr(), skin)
|
||||||
closeButton.onClick { UncivGame.Current.setWorldScreen() }
|
closeButton.onClick { UncivGame.Current.setWorldScreen() }
|
||||||
closeButton.y = stage.height - closeButton.height - 5
|
closeButton.y = stage.height - closeButton.height - 5
|
||||||
topTable.add(closeButton)
|
topTable.add(closeButton)
|
||||||
|
@ -120,7 +120,7 @@ class MapEditorMenuPopup(mapEditorScreen: MapEditorScreen): Popup(mapEditorScree
|
|||||||
exitMapEditorButton.onClick { UncivGame.Current.setWorldScreen(); mapEditorScreen.dispose() }
|
exitMapEditorButton.onClick { UncivGame.Current.setWorldScreen(); mapEditorScreen.dispose() }
|
||||||
add(exitMapEditorButton ).row()
|
add(exitMapEditorButton ).row()
|
||||||
|
|
||||||
val closeOptionsButton = TextButton("Close".tr(), skin)
|
val closeOptionsButton = TextButton(Constants.close.tr(), skin)
|
||||||
closeOptionsButton.onClick { close() }
|
closeOptionsButton.onClick { close() }
|
||||||
add(closeOptionsButton).row()
|
add(closeOptionsButton).row()
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,14 @@ package com.unciv.ui.pickerscreens
|
|||||||
|
|
||||||
import com.unciv.ui.utils.AutoScrollPane as ScrollPane
|
import com.unciv.ui.utils.AutoScrollPane as ScrollPane
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*
|
import com.badlogic.gdx.scenes.scene2d.ui.*
|
||||||
|
import com.unciv.Constants
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
import com.unciv.ui.utils.*
|
import com.unciv.ui.utils.*
|
||||||
|
|
||||||
open class PickerScreen : CameraStageBaseScreen() {
|
open class PickerScreen : CameraStageBaseScreen() {
|
||||||
|
|
||||||
internal var closeButton: TextButton = TextButton("Close".tr(), skin)
|
internal var closeButton: TextButton = TextButton(Constants.close.tr(), skin)
|
||||||
protected var descriptionLabel: Label
|
protected var descriptionLabel: Label
|
||||||
protected var rightSideGroup = VerticalGroup()
|
protected var rightSideGroup = VerticalGroup()
|
||||||
protected var rightSideButton: TextButton
|
protected var rightSideButton: TextButton
|
||||||
|
@ -40,7 +40,7 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
stage.addActor(splitPane)
|
stage.addActor(splitPane)
|
||||||
|
|
||||||
|
|
||||||
val closeButton = TextButton("Close".tr(), skin)
|
val closeButton = TextButton(Constants.close.tr(), skin)
|
||||||
closeButton.onClick { UncivGame.Current.setWorldScreen() }
|
closeButton.onClick { UncivGame.Current.setWorldScreen() }
|
||||||
closeButton.label.setFontSize(24)
|
closeButton.label.setFontSize(24)
|
||||||
closeButton.labelCell.pad(10f)
|
closeButton.labelCell.pad(10f)
|
||||||
@ -326,7 +326,7 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() {
|
|||||||
}
|
}
|
||||||
demandsTable.add(dontSettleCitiesButton).row()
|
demandsTable.add(dontSettleCitiesButton).row()
|
||||||
|
|
||||||
demandsTable.add(TextButton("Close".tr(),skin).onClick { updateRightSide(otherCiv) })
|
demandsTable.add(TextButton(Constants.close.tr(),skin).onClick { updateRightSide(otherCiv) })
|
||||||
return demandsTable
|
return demandsTable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ class TutorialRender(private val screen: CameraStageBaseScreen) {
|
|||||||
|
|
||||||
tutorialPopup.addGoodSizedLabel(texts[0]).row()
|
tutorialPopup.addGoodSizedLabel(texts[0]).row()
|
||||||
|
|
||||||
val button = TextButton("Close".tr(), CameraStageBaseScreen.skin)
|
val button = TextButton(Constants.close.tr(), CameraStageBaseScreen.skin)
|
||||||
button.onClick {
|
button.onClick {
|
||||||
tutorialPopup.remove()
|
tutorialPopup.remove()
|
||||||
texts.removeIndex(0)
|
texts.removeIndex(0)
|
||||||
|
@ -7,6 +7,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
|
|||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||||
import com.badlogic.gdx.utils.Align
|
import com.badlogic.gdx.utils.Align
|
||||||
|
import com.unciv.Constants
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,7 +64,12 @@ open class Popup(val screen: CameraStageBaseScreen): Table(CameraStageBaseScreen
|
|||||||
return add(button).apply { row() }
|
return add(button).apply { row() }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addCloseButton() = addButton("Close") { close() }
|
fun addCloseButton(action: (()->Unit)? = null): Cell<TextButton> {
|
||||||
|
return if (action==null)
|
||||||
|
addButton(Constants.close) { close() }
|
||||||
|
else
|
||||||
|
addButton(Constants.close) { close(); action() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun CameraStageBaseScreen.hasOpenPopups(): Boolean = stage.actors.any { it is Popup && it.isVisible }
|
fun CameraStageBaseScreen.hasOpenPopups(): Boolean = stage.actors.any { it is Popup && it.isVisible }
|
||||||
|
@ -2,6 +2,7 @@ package com.unciv.ui.worldscreen
|
|||||||
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||||
|
import com.unciv.Constants
|
||||||
import com.unciv.logic.civilization.AlertType
|
import com.unciv.logic.civilization.AlertType
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.logic.civilization.PopupAlert
|
import com.unciv.logic.civilization.PopupAlert
|
||||||
@ -157,7 +158,7 @@ class AlertPopup(val worldScreen: WorldScreen, val popupAlert: PopupAlert): Popu
|
|||||||
centerTable.add(wonder.getShortDescription(worldScreen.gameInfo.ruleSet)
|
centerTable.add(wonder.getShortDescription(worldScreen.gameInfo.ruleSet)
|
||||||
.toLabel().apply { setWrap(true) }).width(worldScreen.stage.width/3)
|
.toLabel().apply { setWrap(true) }).width(worldScreen.stage.width/3)
|
||||||
add(centerTable).row()
|
add(centerTable).row()
|
||||||
add(getCloseButton("Close"))
|
add(getCloseButton(Constants.close))
|
||||||
}
|
}
|
||||||
AlertType.TechResearched -> {
|
AlertType.TechResearched -> {
|
||||||
val gameBasics = worldScreen.gameInfo.ruleSet
|
val gameBasics = worldScreen.gameInfo.ruleSet
|
||||||
@ -169,13 +170,13 @@ class AlertPopup(val worldScreen: WorldScreen, val popupAlert: PopupAlert): Popu
|
|||||||
centerTable.add(ImageGetter.getTechIconGroup(tech.name,100f)).pad(20f)
|
centerTable.add(ImageGetter.getTechIconGroup(tech.name,100f)).pad(20f)
|
||||||
centerTable.add(tech.getDescription(gameBasics).toLabel().apply { setWrap(true) }).width(worldScreen.stage.width/3)
|
centerTable.add(tech.getDescription(gameBasics).toLabel().apply { setWrap(true) }).width(worldScreen.stage.width/3)
|
||||||
add(centerTable).row()
|
add(centerTable).row()
|
||||||
add(getCloseButton("Close"))
|
add(getCloseButton(Constants.close))
|
||||||
}
|
}
|
||||||
AlertType.GoldenAge -> {
|
AlertType.GoldenAge -> {
|
||||||
addGoodSizedLabel("GOLDEN AGE")
|
addGoodSizedLabel("GOLDEN AGE")
|
||||||
addSeparator()
|
addSeparator()
|
||||||
addGoodSizedLabel("Your citizens have been happy with your rule for so long that the empire enters a Golden Age!").row()
|
addGoodSizedLabel("Your citizens have been happy with your rule for so long that the empire enters a Golden Age!").row()
|
||||||
add(getCloseButton("Close"))
|
add(getCloseButton(Constants.close))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,10 +506,12 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() {
|
|||||||
nextTurnButton.setText(action.text.tr())
|
nextTurnButton.setText(action.text.tr())
|
||||||
nextTurnButton.color = if (action.text == "Next turn") Color.WHITE else Color.GRAY
|
nextTurnButton.color = if (action.text == "Next turn") Color.WHITE else Color.GRAY
|
||||||
nextTurnButton.pack()
|
nextTurnButton.pack()
|
||||||
if (isSomethingOpen || !isPlayersTurn || waitingForAutosave) nextTurnButton.disable()
|
nextTurnButton.isEnabled = !isSomethingOpen && isPlayersTurn && !waitingForAutosave
|
||||||
else nextTurnButton.enable()
|
|
||||||
nextTurnButton.setPosition(stage.width - nextTurnButton.width - 10f, topBar.y - nextTurnButton.height - 10f)
|
nextTurnButton.setPosition(stage.width - nextTurnButton.width - 10f, topBar.y - nextTurnButton.height - 10f)
|
||||||
}
|
}
|
||||||
|
fun enableNextTurnButtonAfterOptions() {
|
||||||
|
nextTurnButton.isEnabled = isPlayersTurn && !waitingForAutosave
|
||||||
|
}
|
||||||
|
|
||||||
private fun getNextTurnAction(): NextTurnAction {
|
private fun getNextTurnAction(): NextTurnAction {
|
||||||
return when {
|
return when {
|
||||||
|
@ -2,6 +2,7 @@ package com.unciv.ui.worldscreen.mainmenu
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
|
import com.unciv.Constants
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
import com.unciv.logic.IdChecker
|
import com.unciv.logic.IdChecker
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
@ -76,7 +77,7 @@ class WorldScreenMenuPopup(val worldScreen: WorldScreen) : Popup(worldScreen) {
|
|||||||
}.size(width,height)
|
}.size(width,height)
|
||||||
addSeparator()
|
addSeparator()
|
||||||
|
|
||||||
addSquareButton("Close"){
|
addSquareButton(Constants.close){
|
||||||
close()
|
close()
|
||||||
}.size(width,height)
|
}.size(width,height)
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.Color
|
|||||||
import com.badlogic.gdx.scenes.scene2d.ui.*
|
import com.badlogic.gdx.scenes.scene2d.ui.*
|
||||||
import com.badlogic.gdx.utils.Array
|
import com.badlogic.gdx.utils.Array
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
|
import com.unciv.logic.civilization.PlayerType
|
||||||
import com.unciv.models.UncivSound
|
import com.unciv.models.UncivSound
|
||||||
import com.unciv.models.translations.TranslationFileWriter
|
import com.unciv.models.translations.TranslationFileWriter
|
||||||
import com.unciv.models.translations.Translations
|
import com.unciv.models.translations.Translations
|
||||||
@ -38,7 +39,7 @@ class WorldScreenOptionsPopup(val worldScreen:WorldScreen) : Popup(worldScreen)
|
|||||||
scrollPane.setScrollingDisabled(true, false)
|
scrollPane.setScrollingDisabled(true, false)
|
||||||
add(scrollPane).maxHeight(screen.stage.height * 0.6f).row()
|
add(scrollPane).maxHeight(screen.stage.height * 0.6f).row()
|
||||||
|
|
||||||
addCloseButton()
|
addCloseButton() { worldScreen.enableNextTurnButtonAfterOptions() }
|
||||||
|
|
||||||
pack() // Needed to show the background.
|
pack() // Needed to show the background.
|
||||||
center(UncivGame.Current.worldScreen.stage)
|
center(UncivGame.Current.worldScreen.stage)
|
||||||
@ -104,7 +105,7 @@ class WorldScreenOptionsPopup(val worldScreen:WorldScreen) : Popup(worldScreen)
|
|||||||
|
|
||||||
addHeader("Gameplay options")
|
addHeader("Gameplay options")
|
||||||
|
|
||||||
addYesNoRow ("Check for idle units", settings.checkForDueUnits) {
|
addYesNoRow ("Check for idle units", settings.checkForDueUnits, true) {
|
||||||
settings.checkForDueUnits = it
|
settings.checkForDueUnits = it
|
||||||
}
|
}
|
||||||
addYesNoRow ("Move units with a single tap", settings.singleTapMove) {
|
addYesNoRow ("Move units with a single tap", settings.singleTapMove) {
|
||||||
|
Reference in New Issue
Block a user