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

View File

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

View File

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

View File

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

View File

@ -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<String>()
var buildingsToRemove = 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.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

View File

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