Fixed starting positions not activating on new game

This commit is contained in:
Yair Morgenstern 2020-12-21 20:56:02 +02:00
parent 213e71a97b
commit 4e62d0b722
2 changed files with 62 additions and 53 deletions

View File

@ -260,7 +260,8 @@ class GameInfo {
for (tile in tileMap.values) { for (tile in tileMap.values) {
if (tile.resource != null && !ruleSet.tileResources.containsKey(tile.resource!!)) if (tile.resource != null && !ruleSet.tileResources.containsKey(tile.resource!!))
tile.resource = null tile.resource = null
if (tile.improvement != null && !ruleSet.tileImprovements.containsKey(tile.improvement!!)) if (tile.improvement != null && !ruleSet.tileImprovements.containsKey(tile.improvement!!)
&& !tile.improvement!!.startsWith("StartingLocation ")) // To not remove the starting locations in GameStarter.startNewGame()
tile.improvement = null tile.improvement = null
for (unit in tile.getUnits()) for (unit in tile.getUnits())

View File

@ -35,15 +35,19 @@ class Building : NamedStats(), IConstruction {
} }
return counter return counter
} }
var greatPersonPoints: Stats? = null var greatPersonPoints: Stats? = null
/** Extra cost percentage when purchasing */ /** Extra cost percentage when purchasing */
private var hurryCostModifier = 0 private var hurryCostModifier = 0
var isWonder = false var isWonder = false
var isNationalWonder = false var isNationalWonder = false
private var requiredBuilding: String? = null private var requiredBuilding: String? = null
var requiredBuildingInAllCities: String? = null var requiredBuildingInAllCities: String? = null
/** A strategic resource that will be consumed by this building */ /** A strategic resource that will be consumed by this building */
var requiredResource: String? = null var requiredResource: String? = null
/** City can only be built if one of these resources is nearby - it must be improved! */ /** City can only be built if one of these resources is nearby - it must be improved! */
private var requiredNearbyImprovedResources: List<String>? = null private var requiredNearbyImprovedResources: List<String>? = null
private var cannotBeBuiltWith: String? = null private var cannotBeBuiltWith: String? = null
@ -243,8 +247,10 @@ class Building : NamedStats(), IConstruction {
val civInfo = construction.cityInfo.civInfo val civInfo = construction.cityInfo.civInfo
// This overrides the others // This overrides the others
if(uniqueObjects.any { it.placeholderText=="Not displayed as an available construction unless [] is built" if (uniqueObjects.any {
&& !construction.containsBuildingOrEquivalent(it.params[0])} ) it.placeholderText == "Not displayed as an available construction unless [] is built"
&& !construction.containsBuildingOrEquivalent(it.params[0])
})
return "Should not be displayed" return "Should not be displayed"
for (unique in uniqueObjects.filter { it.placeholderText == "Not displayed as an available construction without []" }) { for (unique in uniqueObjects.filter { it.placeholderText == "Not displayed as an available construction without []" }) {
@ -261,10 +267,12 @@ class Building : NamedStats(), IConstruction {
&& cityCenter.getTilesInDistance(1).none { it.matchesUniqueFilter(unique.params[0]) }) return unique.text && cityCenter.getTilesInDistance(1).none { it.matchesUniqueFilter(unique.params[0]) }) return unique.text
"Must not be next to []" -> if (cityCenter.getTilesInDistance(1).any { it.matchesUniqueFilter(unique.params[0]) }) return unique.text "Must not be next to []" -> if (cityCenter.getTilesInDistance(1).any { it.matchesUniqueFilter(unique.params[0]) }) return unique.text
"Must have an owned [] within [] tiles" -> if (cityCenter.getTilesInDistance(unique.params[1].toInt()).none { "Must have an owned [] within [] tiles" -> if (cityCenter.getTilesInDistance(unique.params[1].toInt()).none {
it.matchesUniqueFilter(unique.params[0]) && it.getOwner() == construction.cityInfo.civInfo }) return unique.text it.matchesUniqueFilter(unique.params[0]) && it.getOwner() == construction.cityInfo.civInfo
}) return unique.text
"Can only be built in annexed cities" -> if (construction.cityInfo.isPuppet || construction.cityInfo.foundingCiv == "" "Can only be built in annexed cities" -> if (construction.cityInfo.isPuppet || construction.cityInfo.foundingCiv == ""
|| construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text || construction.cityInfo.civInfo.civName == construction.cityInfo.foundingCiv) return unique.text
"Requires []" -> { val filter = unique.params[0] "Requires []" -> {
val filter = unique.params[0]
if (filter in civInfo.gameInfo.ruleSet.buildings) { if (filter in civInfo.gameInfo.ruleSet.buildings) {
if (civInfo.cities.none { it.cityConstructions.containsBuildingOrEquivalent(filter) }) return unique.text // Wonder is not built if (civInfo.cities.none { it.cityConstructions.containsBuildingOrEquivalent(filter) }) return unique.text // Wonder is not built
} else if (!civInfo.policies.adoptedPolicies.contains(filter)) return "Policy is not adopted" // this reason should not be displayed } else if (!civInfo.policies.adoptedPolicies.contains(filter)) return "Policy is not adopted" // this reason should not be displayed