From 925f3267ad67efe7c6f21c7fbd8a685db1ec1d1b Mon Sep 17 00:00:00 2001 From: Federico Luongo Date: Sat, 25 Jan 2020 19:56:48 +0100 Subject: [PATCH] Discrete rendering (#1768) * Re-introduced Discrete Rendering as an opt-in feature * Persistent settings change --- core/src/com/unciv/UncivGame.kt | 2 ++ .../com/unciv/models/metadata/GameSettings.kt | 2 +- .../com/unciv/ui/tilegroups/TileGroupIcons.kt | 2 +- core/src/com/unciv/ui/utils/UnitGroup.kt | 24 ++++++++++--------- .../mainmenu/WorldScreenOptionsPopup.kt | 8 +++++++ 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/core/src/com/unciv/UncivGame.kt b/core/src/com/unciv/UncivGame.kt index 0bb48e5550..5d0f89312f 100644 --- a/core/src/com/unciv/UncivGame.kt +++ b/core/src/com/unciv/UncivGame.kt @@ -67,6 +67,8 @@ class UncivGame( settings = GameSaver().getGeneralSettings() // needed for the screen screen = LoadingScreen() + Gdx.graphics.isContinuousRendering = settings.continuousRendering + thread(name="LoadJSON") { RulesetCache.loadRulesets() diff --git a/core/src/com/unciv/models/metadata/GameSettings.kt b/core/src/com/unciv/models/metadata/GameSettings.kt index 939d3aa71a..295c1af8a1 100644 --- a/core/src/com/unciv/models/metadata/GameSettings.kt +++ b/core/src/com/unciv/models/metadata/GameSettings.kt @@ -24,7 +24,7 @@ class GameSettings { var showPixelImprovements: Boolean = true var showPixelResources: Boolean = true var nuclearWeaponEnabled = false - + var continuousRendering = true var userId = "" fun save(){ diff --git a/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt b/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt index 06190e1096..c9a49ca094 100644 --- a/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt +++ b/core/src/com/unciv/ui/tilegroups/TileGroupIcons.kt @@ -50,7 +50,7 @@ class TileGroupIcons(val tileGroup: TileGroup){ if (unit != null && isViewable) { // Tile is visible newImage = UnitGroup(unit, 25f) - if (oldUnitGroup?.blackSpinningCircle != null) { + if (UncivGame.Current.settings.continuousRendering && oldUnitGroup?.blackSpinningCircle != null) { newImage.blackSpinningCircle = ImageGetter.getCircle() .apply { rotation = oldUnitGroup.blackSpinningCircle!!.rotation } } diff --git a/core/src/com/unciv/ui/utils/UnitGroup.kt b/core/src/com/unciv/ui/utils/UnitGroup.kt index c1bf96c732..95fbb087f0 100644 --- a/core/src/com/unciv/ui/utils/UnitGroup.kt +++ b/core/src/com/unciv/ui/utils/UnitGroup.kt @@ -5,6 +5,7 @@ import com.badlogic.gdx.scenes.scene2d.Group import com.badlogic.gdx.scenes.scene2d.actions.Actions import com.badlogic.gdx.scenes.scene2d.actions.RepeatAction import com.badlogic.gdx.scenes.scene2d.ui.Image +import com.unciv.UncivGame import com.unciv.logic.map.MapUnit class UnitGroup(val unit: MapUnit, val size: Float): Group() { @@ -49,16 +50,17 @@ class UnitGroup(val unit: MapUnit, val size: Float): Group() { addActor(whiteHalo) whiteHalo.toBack() - - val spinningCircle = if (blackSpinningCircle != null) blackSpinningCircle!! - else ImageGetter.getCircle() - spinningCircle.setSize(5f, 5f) - spinningCircle.color = Color.BLACK - spinningCircle.center(this) - spinningCircle.x += whiteHaloSize / 2 // to edge of white halo - spinningCircle.setOrigin(spinningCircle.width / 2 - whiteHaloSize / 2, spinningCircle.height / 2) - addActor(spinningCircle) - spinningCircle.addAction(Actions.repeat(RepeatAction.FOREVER, Actions.rotateBy(90f, 1f))) - blackSpinningCircle = spinningCircle + if (UncivGame.Current.settings.continuousRendering) { + val spinningCircle = if (blackSpinningCircle != null) blackSpinningCircle!! + else ImageGetter.getCircle() + spinningCircle.setSize(5f, 5f) + spinningCircle.color = Color.BLACK + spinningCircle.center(this) + spinningCircle.x += whiteHaloSize / 2 // to edge of white halo + spinningCircle.setOrigin(spinningCircle.width / 2 - whiteHaloSize / 2, spinningCircle.height / 2) + addActor(spinningCircle) + spinningCircle.addAction(Actions.repeat(RepeatAction.FOREVER, Actions.rotateBy(90f, 1f))) + blackSpinningCircle = spinningCircle + } } } \ No newline at end of file diff --git a/core/src/com/unciv/ui/worldscreen/mainmenu/WorldScreenOptionsPopup.kt b/core/src/com/unciv/ui/worldscreen/mainmenu/WorldScreenOptionsPopup.kt index bc3857821c..695800097e 100644 --- a/core/src/com/unciv/ui/worldscreen/mainmenu/WorldScreenOptionsPopup.kt +++ b/core/src/com/unciv/ui/worldscreen/mainmenu/WorldScreenOptionsPopup.kt @@ -83,6 +83,14 @@ class WorldScreenOptionsPopup(val worldScreen:WorldScreen) : Popup(worldScreen){ addTileSetSelectBox(innerTable) + // Do not add to template.properties yet please. + innerTable.add("Continuous rendering\n(HIGHLY EXPERIMENTAL)".toLabel()) + innerTable.addButton(if (settings.continuousRendering) "Yes".tr() else "No".tr()) { + settings.continuousRendering = !settings.continuousRendering + Gdx.graphics.isContinuousRendering = settings.continuousRendering + update() + } + innerTable.add("Gameplay options".toLabel(fontSize = 24)).colspan(2).row()