diff --git a/core/src/com/unciv/Constants.kt b/core/src/com/unciv/Constants.kt index e8a32c047f..c2e77c2486 100644 --- a/core/src/com/unciv/Constants.kt +++ b/core/src/com/unciv/Constants.kt @@ -61,6 +61,8 @@ object Constants { const val tutorialPopupNamePrefix = "Tutorial: " const val close = "Close" + const val disabled="disabled" + const val enabled="enabled" const val scienceConversionEffect = "Production to science conversion in cities increased by 33%" @@ -72,4 +74,5 @@ object Constants { const val modernEra = "Modern era" const val informationEra = "Information era" const val futureEra = "Future era" + const val barbarians = "Barbarians" } \ No newline at end of file diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index ec328613e2..984c2d6680 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -59,7 +59,7 @@ class GameInfo { fun getCivilization(civName:String) = civilizations.first { it.civName==civName } fun getCurrentPlayerCivilization() = currentPlayerCiv - fun getBarbarianCivilization() = getCivilization("Barbarians") + fun getBarbarianCivilization() = getCivilization(Constants.barbarians) fun getDifficulty() = difficultyObject fun getCities() = civilizations.flatMap { it.cities } //endregion diff --git a/core/src/com/unciv/logic/GameStarter.kt b/core/src/com/unciv/logic/GameStarter.kt index 3d64c0d449..85819e0d3f 100644 --- a/core/src/com/unciv/logic/GameStarter.kt +++ b/core/src/com/unciv/logic/GameStarter.kt @@ -1,6 +1,7 @@ package com.unciv.logic import com.badlogic.gdx.math.Vector2 +import com.sun.xml.internal.bind.v2.runtime.reflect.opt.Const import com.unciv.Constants import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.map.* @@ -59,11 +60,12 @@ object GameStarter { val availableCivNames = Stack() availableCivNames.addAll(ruleset.nations.filter { !it.value.isCityState() }.keys.shuffled()) availableCivNames.removeAll(newGameParameters.players.map { it.chosenCiv }) - availableCivNames.remove("Barbarians") + availableCivNames.remove(Constants.barbarianEncampment) - - val barbarianCivilization = CivilizationInfo("Barbarians") - gameInfo.civilizations.add(barbarianCivilization) + if(!newGameParameters.noBarbarians && ruleset.modOptions.barbarians!=Constants.disabled) { + val barbarianCivilization = CivilizationInfo(Constants.barbarians) + gameInfo.civilizations.add(barbarianCivilization) + } for (player in newGameParameters.players.sortedBy { it.chosenCiv == "Random" }) { val nationName = if (player.chosenCiv != "Random") player.chosenCiv diff --git a/core/src/com/unciv/models/ruleset/Nation.kt b/core/src/com/unciv/models/ruleset/Nation.kt index 4bcef718d4..47c6527563 100644 --- a/core/src/com/unciv/models/ruleset/Nation.kt +++ b/core/src/com/unciv/models/ruleset/Nation.kt @@ -1,6 +1,7 @@ package com.unciv.models.ruleset import com.badlogic.gdx.graphics.Color +import com.unciv.Constants import com.unciv.UniqueAbility import com.unciv.logic.civilization.CityStateType import com.unciv.models.stats.INamed @@ -47,7 +48,7 @@ class Nation : INamed { fun isCityState()= cityStateType != null fun isMajorCiv() = !isBarbarian() && !isCityState() - fun isBarbarian() = name=="Barbarians" + fun isBarbarian() = name== Constants.barbarians // This is its own transient because we'll need to check this for every tile-to-tile movement which is harsh @Transient var forestsAndJunglesAreRoads = false diff --git a/core/src/com/unciv/models/ruleset/Ruleset.kt b/core/src/com/unciv/models/ruleset/Ruleset.kt index 137204e508..8468f43e54 100644 --- a/core/src/com/unciv/models/ruleset/Ruleset.kt +++ b/core/src/com/unciv/models/ruleset/Ruleset.kt @@ -2,6 +2,7 @@ package com.unciv.models.ruleset import com.badlogic.gdx.Gdx import com.badlogic.gdx.files.FileHandle +import com.unciv.Constants import com.unciv.JsonParser import com.unciv.logic.UncivShowableException import com.unciv.models.ruleset.tech.TechColumn @@ -16,6 +17,7 @@ import kotlin.collections.set class ModOptions { var isBaseRuleset = false + var barbarians = Constants.enabled var techsToRemove = HashSet() var buildingsToRemove = HashSet() var unitsToRemove = HashSet() diff --git a/core/src/com/unciv/ui/newgamescreen/PlayerPickerTable.kt b/core/src/com/unciv/ui/newgamescreen/PlayerPickerTable.kt index d23ad77b54..bcf2ff130d 100644 --- a/core/src/com/unciv/ui/newgamescreen/PlayerPickerTable.kt +++ b/core/src/com/unciv/ui/newgamescreen/PlayerPickerTable.kt @@ -8,6 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.scenes.scene2d.ui.TextButton import com.badlogic.gdx.scenes.scene2d.ui.TextField import com.badlogic.gdx.utils.Align +import com.unciv.Constants import com.unciv.UncivGame import com.unciv.logic.IdChecker import com.unciv.logic.civilization.PlayerType @@ -154,7 +155,7 @@ class PlayerPickerTable(val newGameScreen: NewGameScreen, val newGameParameters: for (nation in newGameScreen.ruleset.nations.values - .filter { !it.isCityState() && it.name != "Barbarians" }) { + .filter { !it.isCityState() && it.name != Constants.barbarians }) { if (player.chosenCiv != nation.name && newGameParameters.players.any { it.chosenCiv == nation.name }) continue diff --git a/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt b/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt index ecc29f5bf1..75133bd7e1 100644 --- a/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt +++ b/tests/src/com/unciv/logic/map/UnitMovementAlgorithmsTests.kt @@ -193,8 +193,8 @@ class UnitMovementAlgorithmsTests { tile.setTransients() val otherCiv = CivilizationInfo() - otherCiv.civName = "Barbarians" // they are always enemies - otherCiv.nation = Nation().apply { name = "Barbarians" } + otherCiv.civName = Constants.barbarians // they are always enemies + otherCiv.nation = Nation().apply { name = Constants.barbarians } val otherUnit = MapUnit() otherUnit.civInfo = otherCiv tile.militaryUnit = otherUnit