Discrete rendering (#1768)

* Re-introduced Discrete Rendering as an opt-in feature

* Persistent settings change
This commit is contained in:
Federico Luongo
2020-01-25 19:56:48 +01:00
committed by Yair Morgenstern
parent ae8fdb3b7d
commit 925f3267ad
5 changed files with 25 additions and 13 deletions

View File

@ -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()

View File

@ -24,7 +24,7 @@ class GameSettings {
var showPixelImprovements: Boolean = true
var showPixelResources: Boolean = true
var nuclearWeaponEnabled = false
var continuousRendering = true
var userId = ""
fun save(){

View File

@ -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 }
}

View File

@ -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
}
}
}

View File

@ -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()