Can now permanently disable barbarians in mods

This commit is contained in:
Yair Morgenstern 2020-04-18 23:59:26 +03:00
parent 4fd869dbee
commit 745d48c2ae
7 changed files with 18 additions and 9 deletions

View File

@ -61,6 +61,8 @@ object Constants {
const val tutorialPopupNamePrefix = "Tutorial: " const val tutorialPopupNamePrefix = "Tutorial: "
const val close = "Close" const val close = "Close"
const val disabled="disabled"
const val enabled="enabled"
const val scienceConversionEffect = "Production to science conversion in cities increased by 33%" 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 modernEra = "Modern era"
const val informationEra = "Information era" const val informationEra = "Information era"
const val futureEra = "Future era" const val futureEra = "Future era"
const val barbarians = "Barbarians"
} }

View File

@ -59,7 +59,7 @@ class GameInfo {
fun getCivilization(civName:String) = civilizations.first { it.civName==civName } fun getCivilization(civName:String) = civilizations.first { it.civName==civName }
fun getCurrentPlayerCivilization() = currentPlayerCiv fun getCurrentPlayerCivilization() = currentPlayerCiv
fun getBarbarianCivilization() = getCivilization("Barbarians") fun getBarbarianCivilization() = getCivilization(Constants.barbarians)
fun getDifficulty() = difficultyObject fun getDifficulty() = difficultyObject
fun getCities() = civilizations.flatMap { it.cities } fun getCities() = civilizations.flatMap { it.cities }
//endregion //endregion

View File

@ -1,6 +1,7 @@
package com.unciv.logic package com.unciv.logic
import com.badlogic.gdx.math.Vector2 import com.badlogic.gdx.math.Vector2
import com.sun.xml.internal.bind.v2.runtime.reflect.opt.Const
import com.unciv.Constants import com.unciv.Constants
import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.* import com.unciv.logic.map.*
@ -59,11 +60,12 @@ object GameStarter {
val availableCivNames = Stack<String>() val availableCivNames = Stack<String>()
availableCivNames.addAll(ruleset.nations.filter { !it.value.isCityState() }.keys.shuffled()) availableCivNames.addAll(ruleset.nations.filter { !it.value.isCityState() }.keys.shuffled())
availableCivNames.removeAll(newGameParameters.players.map { it.chosenCiv }) availableCivNames.removeAll(newGameParameters.players.map { it.chosenCiv })
availableCivNames.remove("Barbarians") availableCivNames.remove(Constants.barbarianEncampment)
if(!newGameParameters.noBarbarians && ruleset.modOptions.barbarians!=Constants.disabled) {
val barbarianCivilization = CivilizationInfo("Barbarians") val barbarianCivilization = CivilizationInfo(Constants.barbarians)
gameInfo.civilizations.add(barbarianCivilization) gameInfo.civilizations.add(barbarianCivilization)
}
for (player in newGameParameters.players.sortedBy { it.chosenCiv == "Random" }) { for (player in newGameParameters.players.sortedBy { it.chosenCiv == "Random" }) {
val nationName = if (player.chosenCiv != "Random") player.chosenCiv val nationName = if (player.chosenCiv != "Random") player.chosenCiv

View File

@ -1,6 +1,7 @@
package com.unciv.models.ruleset package com.unciv.models.ruleset
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.unciv.Constants
import com.unciv.UniqueAbility import com.unciv.UniqueAbility
import com.unciv.logic.civilization.CityStateType import com.unciv.logic.civilization.CityStateType
import com.unciv.models.stats.INamed import com.unciv.models.stats.INamed
@ -47,7 +48,7 @@ class Nation : INamed {
fun isCityState()= cityStateType != null fun isCityState()= cityStateType != null
fun isMajorCiv() = !isBarbarian() && !isCityState() 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 // 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 @Transient var forestsAndJunglesAreRoads = false

View File

@ -2,6 +2,7 @@ package com.unciv.models.ruleset
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Gdx
import com.badlogic.gdx.files.FileHandle import com.badlogic.gdx.files.FileHandle
import com.unciv.Constants
import com.unciv.JsonParser import com.unciv.JsonParser
import com.unciv.logic.UncivShowableException import com.unciv.logic.UncivShowableException
import com.unciv.models.ruleset.tech.TechColumn import com.unciv.models.ruleset.tech.TechColumn
@ -16,6 +17,7 @@ import kotlin.collections.set
class ModOptions { class ModOptions {
var isBaseRuleset = false var isBaseRuleset = false
var barbarians = Constants.enabled
var techsToRemove = HashSet<String>() var techsToRemove = HashSet<String>()
var buildingsToRemove = HashSet<String>() var buildingsToRemove = HashSet<String>()
var unitsToRemove = HashSet<String>() var unitsToRemove = HashSet<String>()

View File

@ -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.TextButton
import com.badlogic.gdx.scenes.scene2d.ui.TextField import com.badlogic.gdx.scenes.scene2d.ui.TextField
import com.badlogic.gdx.utils.Align import com.badlogic.gdx.utils.Align
import com.unciv.Constants
import com.unciv.UncivGame import com.unciv.UncivGame
import com.unciv.logic.IdChecker import com.unciv.logic.IdChecker
import com.unciv.logic.civilization.PlayerType import com.unciv.logic.civilization.PlayerType
@ -154,7 +155,7 @@ class PlayerPickerTable(val newGameScreen: NewGameScreen, val newGameParameters:
for (nation in newGameScreen.ruleset.nations.values 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 }) if (player.chosenCiv != nation.name && newGameParameters.players.any { it.chosenCiv == nation.name })
continue continue

View File

@ -193,8 +193,8 @@ class UnitMovementAlgorithmsTests {
tile.setTransients() tile.setTransients()
val otherCiv = CivilizationInfo() val otherCiv = CivilizationInfo()
otherCiv.civName = "Barbarians" // they are always enemies otherCiv.civName = Constants.barbarians // they are always enemies
otherCiv.nation = Nation().apply { name = "Barbarians" } otherCiv.nation = Nation().apply { name = Constants.barbarians }
val otherUnit = MapUnit() val otherUnit = MapUnit()
otherUnit.civInfo = otherCiv otherUnit.civInfo = otherCiv
tile.militaryUnit = otherUnit tile.militaryUnit = otherUnit