From 2e0d73cf7591335762816caa4613b0359f20cd19 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 10 Aug 2020 22:59:48 +0300 Subject: [PATCH] Game handles 'picking a scenario based on a custom ruleset' well --- core/src/com/unciv/ui/newgamescreen/MapOptionsTable.kt | 1 + core/src/com/unciv/ui/newgamescreen/NewGameScreen.kt | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/ui/newgamescreen/MapOptionsTable.kt b/core/src/com/unciv/ui/newgamescreen/MapOptionsTable.kt index 2d38e9ce1b..58db331f3f 100644 --- a/core/src/com/unciv/ui/newgamescreen/MapOptionsTable.kt +++ b/core/src/com/unciv/ui/newgamescreen/MapOptionsTable.kt @@ -61,6 +61,7 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() { val scenario = MapSaver.loadScenario(mapParameters.name) newGameScreen.gameSetupInfo.gameParameters = scenario.gameParameters newGameScreen.gameSetupInfo.mapParameters = mapParameters + newGameScreen.updateRuleset() // update PlayerTable and GameOptionsTable newGameScreen.lockTables() newGameScreen.updateTables() diff --git a/core/src/com/unciv/ui/newgamescreen/NewGameScreen.kt b/core/src/com/unciv/ui/newgamescreen/NewGameScreen.kt index dbcf872a64..354fdcb857 100644 --- a/core/src/com/unciv/ui/newgamescreen/NewGameScreen.kt +++ b/core/src/com/unciv/ui/newgamescreen/NewGameScreen.kt @@ -10,6 +10,7 @@ import com.unciv.logic.* import com.unciv.logic.civilization.PlayerType import com.unciv.logic.map.MapParameters import com.unciv.models.metadata.GameParameters +import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.RulesetCache import com.unciv.models.translations.tr import com.unciv.ui.pickerscreens.PickerScreen @@ -35,7 +36,7 @@ class GameSetupInfo(var gameId:String, var gameParameters: GameParameters, var m class NewGameScreen(previousScreen:CameraStageBaseScreen, _gameSetupInfo: GameSetupInfo?=null): IPreviousScreen, PickerScreen() { override val gameSetupInfo = _gameSetupInfo ?: GameSetupInfo() - override val ruleset = RulesetCache.getComplexRuleset(gameSetupInfo.gameParameters) + override var ruleset = RulesetCache.getComplexRuleset(gameSetupInfo.gameParameters) // needs to be set because the gameoptionstable etc. depend on this var newGameOptionsTable = GameOptionsTable(this) { desiredCiv: String -> playerPickerTable.update(desiredCiv) } // Has to be defined before the mapOptionsTable, since the mapOptionsTable refers to it on init var playerPickerTable = PlayerPickerTable(this, gameSetupInfo.gameParameters) @@ -57,6 +58,8 @@ class NewGameScreen(previousScreen:CameraStageBaseScreen, _gameSetupInfo: GameSe topTable.pack() topTable.setFillParent(true) + updateRuleset() + rightSideButton.enable() rightSideButton.setText("Start game!".tr()) rightSideButton.onClick { @@ -135,6 +138,11 @@ class NewGameScreen(previousScreen:CameraStageBaseScreen, _gameSetupInfo: GameSe Gdx.graphics.requestRendering() } + fun updateRuleset(){ + ruleset.clear() + ruleset.add(RulesetCache.getComplexRuleset(gameSetupInfo.gameParameters)) + } + fun lockTables() { playerPickerTable.locked = true newGameOptionsTable.locked = true