diff --git a/core/src/com/unciv/models/metadata/GameSettings.kt b/core/src/com/unciv/models/metadata/GameSettings.kt index b5a298fd68..a3dbd6c558 100644 --- a/core/src/com/unciv/models/metadata/GameSettings.kt +++ b/core/src/com/unciv/models/metadata/GameSettings.kt @@ -8,6 +8,7 @@ class GameSettings { var checkForDueUnits: Boolean = true var singleTapMove: Boolean = false var language: String = "English" + var resolution: String = "1050x700" var tutorialsShown = ArrayList() var hasCrashedRecently = false var soundEffectsVolume = 0.5f diff --git a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt index 3739f11eac..0c0cffaac9 100644 --- a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt +++ b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt @@ -22,7 +22,8 @@ open class CameraStageBaseScreen : Screen { var hasPopupOpen = false init { - stage = Stage(ExtendViewport(Gdx.graphics.width.toFloat(), Gdx.graphics.height.toFloat()), batch)// FitViewport(1000,600) + val resolutions: List = game.settings.resolution.split("x").map { it.toInt().toFloat() } + stage = Stage(ExtendViewport(resolutions[0], resolutions[1]), batch)// FitViewport(1000,600) } diff --git a/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt b/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt index 65d74c2ad7..b86e43d9e7 100644 --- a/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt +++ b/core/src/com/unciv/ui/worldscreen/optionstable/WorldScreenOptionsTable.kt @@ -112,6 +112,8 @@ class WorldScreenOptionsTable(val worldScreen:WorldScreen) : PopupTable(worldScr addLanguageSelectBox(innerTable) + addResolutionSelectBox(innerTable) + addAutosaveTurnsSelectBox(innerTable) addTileSetSelectBox(innerTable) @@ -194,6 +196,26 @@ class WorldScreenOptionsTable(val worldScreen:WorldScreen) : PopupTable(worldScr } } + private fun addResolutionSelectBox(innerTable: PopupTable) { + innerTable.add("Resolution".toLabel()) + + val resolutionSelectBox = SelectBox(skin) + val resolutionArray = Array() + resolutionArray.addAll("750x500","900x600", "1050x700", "1200x800", "1500x1000") + resolutionSelectBox.items = resolutionArray + resolutionSelectBox.selected = UncivGame.Current.settings.resolution + innerTable.add(resolutionSelectBox).pad(10f).row() + + resolutionSelectBox.addListener(object : ChangeListener() { + override fun changed(event: ChangeEvent?, actor: Actor?) { + UncivGame.Current.settings.resolution = resolutionSelectBox.selected + UncivGame.Current.settings.save() + UncivGame.Current.worldScreen = WorldScreen(worldScreen.viewingCiv) + UncivGame.Current.setWorldScreen() + WorldScreenOptionsTable(UncivGame.Current.worldScreen) + } + }) + } private fun addTileSetSelectBox(innerTable: PopupTable) { innerTable.add("Tileset".toLabel())