From 56ff436f94d9e788c03fc9504f2ce8dea731d958 Mon Sep 17 00:00:00 2001 From: "david.enrique" Date: Thu, 13 Jun 2019 23:37:48 +0200 Subject: [PATCH] Add victory type choice on new game screen --- .../Translations/Diplomacy,Trade,Nations.json | 2 +- .../NewGame,SaveGame,LoadGame.json | 16 ++++++++ core/src/com/unciv/GameStarter.kt | 2 + core/src/com/unciv/ui/NewGameScreen.kt | 38 ++++++++++++++++++- 4 files changed, 55 insertions(+), 3 deletions(-) diff --git a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json index da4feaddee..5e66982205 100644 --- a/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json +++ b/android/assets/jsons/Translations/Diplomacy,Trade,Nations.json @@ -218,7 +218,7 @@ } "Neutral":{ - Italian:"Neutrale" + Italian:"Neutrale" French:"Neutre" Simplified_Chinese:"泛泛之交" Portuguese:"Neutra" // relation=relação relação is in feminine so therefore neutral(= neutro/neutra) deve ser feminino diff --git a/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame.json b/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame.json index 8d3efa6b29..ce0bd65cb7 100644 --- a/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame.json +++ b/android/assets/jsons/Translations/NewGame,SaveGame,LoadGame.json @@ -119,6 +119,22 @@ Italian:"Niente barbari" French:"Pas de barbare" } + + "Victory conditions": { + French: "Conditions de victoire" + } + + "Scientific": { + French: "Scientifique" + } + + "Domination": { + French: "Conquete" + }, + + "Cultural": { + French: "Culturelle" + } ////////////// Save and load game diff --git a/core/src/com/unciv/GameStarter.kt b/core/src/com/unciv/GameStarter.kt index 96c611dd84..1dd67d1a9a 100644 --- a/core/src/com/unciv/GameStarter.kt +++ b/core/src/com/unciv/GameStarter.kt @@ -10,6 +10,7 @@ import com.unciv.logic.map.MapType import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileMap import com.unciv.models.gamebasics.GameBasics +import com.unciv.models.gamebasics.VictoryType import java.util.* import kotlin.collections.ArrayList @@ -23,6 +24,7 @@ class GameParameters{ var mapType= MapType.Perlin var noBarbarians=false var mapFileName :String?=null + var victoryTypes :ArrayList = VictoryType.values().toCollection(ArrayList()) // By default, all victory types } class GameStarter{ diff --git a/core/src/com/unciv/ui/NewGameScreen.kt b/core/src/com/unciv/ui/NewGameScreen.kt index 23efb86c83..7ff3d73f0c 100644 --- a/core/src/com/unciv/ui/NewGameScreen.kt +++ b/core/src/com/unciv/ui/NewGameScreen.kt @@ -11,6 +11,7 @@ import com.unciv.logic.GameInfo import com.unciv.logic.GameSaver import com.unciv.logic.map.MapType import com.unciv.models.gamebasics.GameBasics +import com.unciv.models.gamebasics.VictoryType import com.unciv.models.gamebasics.tr import com.unciv.ui.pickerscreens.PickerScreen import com.unciv.ui.utils.disable @@ -73,10 +74,9 @@ class NewGameScreen: PickerScreen(){ newGameOptionsTable.skin = skin addMapTypeSizeAndFile(newGameOptionsTable) - addNumberOfHumansAndEnemies(newGameOptionsTable) - addDifficultySelectBox(newGameOptionsTable) + addVictoryTypeCheckboxes(newGameOptionsTable) val noBarbariansCheckbox = CheckBox("No barbarians".tr(),skin) noBarbariansCheckbox.isChecked=newGameParameters.noBarbarians @@ -226,6 +226,40 @@ class NewGameScreen: PickerScreen(){ newGameOptionsTable.add(difficultySelectBox).pad(10f).row() } + + private fun addVictoryTypeCheckboxes(newGameOptionsTable: Table) { + newGameOptionsTable.add("{Victory conditions}:".tr()).colspan(2).row() + + // Create a checkbox for each VictoryType existing + var i=0 + VictoryType.values().forEach{ + val victoryCheckbox = CheckBox(it.name.tr(),skin) + victoryCheckbox.name=it.name + victoryCheckbox.isChecked=newGameParameters.victoryTypes.contains(it) + victoryCheckbox.addListener(object : ChangeListener() { + override fun changed(event: ChangeEvent?, actor: Actor?) { + // If the checkbox is checked, adds the victoryType else remove it + if(victoryCheckbox.isChecked){ + newGameParameters.victoryTypes.add(it) + } else { + newGameParameters.victoryTypes.remove(it) + } + } + }) + i++ + if(i%2==0) { + // New row only each two checkboxes + newGameOptionsTable.add(victoryCheckbox) + .left() // Left alignment + .pad(10f).row() + } else { + newGameOptionsTable.add(victoryCheckbox) + .left() // Left alignment + } + } + + } + private fun getMapFileSelectBox(): SelectBox { val mapFileSelectBox = SelectBox(skin) val mapNames = Array()