diff --git a/android/assets/jsons/translations/template.properties b/android/assets/jsons/translations/template.properties index 80c6d19bfe..f2404c65e6 100644 --- a/android/assets/jsons/translations/template.properties +++ b/android/assets/jsons/translations/template.properties @@ -833,6 +833,11 @@ Show pixel units = Show pixel improvements = Unit icon opacity = +### Performance subgroup + +Performance = +Continuous rendering = +When disabled, saves battery life but certain animations will be suspended = ## Gameplay tab Gameplay = diff --git a/core/src/com/unciv/UncivGame.kt b/core/src/com/unciv/UncivGame.kt index 6bb2cacaad..95c88a58c9 100644 --- a/core/src/com/unciv/UncivGame.kt +++ b/core/src/com/unciv/UncivGame.kt @@ -139,7 +139,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci settings.tileSet = Constants.defaultTileset } - Gdx.graphics.isContinuousRendering = false + Gdx.graphics.isContinuousRendering = settings.continuousRendering Concurrency.run("LoadJSON") { RulesetCache.loadRulesets() diff --git a/core/src/com/unciv/models/metadata/GameSettings.kt b/core/src/com/unciv/models/metadata/GameSettings.kt index fc736e789e..c1e900b7f2 100644 --- a/core/src/com/unciv/models/metadata/GameSettings.kt +++ b/core/src/com/unciv/models/metadata/GameSettings.kt @@ -80,6 +80,7 @@ class GameSettings { var unitIconOpacity = 1f // default corresponds to fully opaque val showPixelUnits: Boolean get() = unitSet != null var showPixelImprovements: Boolean = true + var continuousRendering = false var orderTradeOffersByAmount = true var confirmNextTurn = false var windowState = WindowState() diff --git a/core/src/com/unciv/ui/popups/options/DisplayTab.kt b/core/src/com/unciv/ui/popups/options/DisplayTab.kt index a5a0691764..d36aff6bbc 100644 --- a/core/src/com/unciv/ui/popups/options/DisplayTab.kt +++ b/core/src/com/unciv/ui/popups/options/DisplayTab.kt @@ -2,6 +2,7 @@ package com.unciv.ui.popups.options import com.badlogic.gdx.Application import com.badlogic.gdx.Gdx +import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.scenes.scene2d.ui.SelectBox import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.utils.Array @@ -12,12 +13,14 @@ import com.unciv.models.skins.SkinCache import com.unciv.models.tilesets.TileSetCache import com.unciv.models.translations.tr import com.unciv.ui.components.extensions.addSeparator +import com.unciv.ui.components.extensions.brighten import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toTextButton import com.unciv.ui.components.input.onChange import com.unciv.ui.components.input.onClick import com.unciv.ui.components.widgets.TranslatedSelectBox import com.unciv.ui.components.widgets.UncivSlider +import com.unciv.ui.components.widgets.WrappableLabel import com.unciv.ui.images.ImageGetter import com.unciv.ui.popups.ConfirmPopup import com.unciv.ui.screens.basescreen.BaseScreen @@ -82,6 +85,22 @@ fun displayTab( optionsPopup.addCheckbox(this, "Show pixel improvements", settings.showPixelImprovements, true) { settings.showPixelImprovements = it } addUnitIconAlphaSlider(this, settings, optionsPopup.selectBoxMinWidth) + + addSeparator() + add("Performance".toLabel(fontSize = 24)).colspan(2).row() + + optionsPopup.addCheckbox(this, "Continuous rendering", settings.continuousRendering) { + settings.continuousRendering = it + Gdx.graphics.isContinuousRendering = it + } + + val continuousRenderingDescription = "When disabled, saves battery life but certain animations will be suspended" + val continuousRenderingLabel = WrappableLabel( + continuousRenderingDescription, + optionsPopup.tabs.prefWidth, Color.ORANGE.brighten(0.7f), 14 + ) + continuousRenderingLabel.wrap = true + add(continuousRenderingLabel).colspan(2).padTop(10f).row() } private fun addMinimapSizeSlider(table: Table, settings: GameSettings, selectBoxMinWidth: Float) {