mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 14:24:43 -04:00
Added "in other cities" as a cityFilter (#5131)
This commit is contained in:
parent
3722fab38d
commit
d247cacbca
@ -301,6 +301,7 @@
|
|||||||
"requiredBuilding": "Monument",
|
"requiredBuilding": "Monument",
|
||||||
"maintenance": 2,
|
"maintenance": 2,
|
||||||
"hurryCostModifier": 25,
|
"hurryCostModifier": 25,
|
||||||
|
"uniques": ["Destroyed when the city is captured"],
|
||||||
"requiredTech": "Drama and Poetry"
|
"requiredTech": "Drama and Poetry"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -624,7 +624,8 @@ class CityInfo {
|
|||||||
fun matchesFilter(filter: String, viewingCiv: CivilizationInfo = civInfo): Boolean {
|
fun matchesFilter(filter: String, viewingCiv: CivilizationInfo = civInfo): Boolean {
|
||||||
return when (filter) {
|
return when (filter) {
|
||||||
"in this city" -> true
|
"in this city" -> true
|
||||||
"in all cities" -> true
|
"in all cities" -> true // Filtered by the way uniques our found
|
||||||
|
"in other cities" -> true // Filtered by the way uniques our found
|
||||||
"in all coastal cities" -> isCoastal()
|
"in all coastal cities" -> isCoastal()
|
||||||
"in capital" -> isCapital()
|
"in capital" -> isCapital()
|
||||||
"in all non-occupied cities" -> !cityStats.hasExtraAnnexUnhappiness() || isPuppet
|
"in all non-occupied cities" -> !cityStats.hasExtraAnnexUnhappiness() || isPuppet
|
||||||
@ -671,12 +672,16 @@ class CityInfo {
|
|||||||
// The localUniques might not be filtered when passed as a parameter, so we filter it anyway
|
// The localUniques might not be filtered when passed as a parameter, so we filter it anyway
|
||||||
// The time loss shouldn't be that large I don't think
|
// The time loss shouldn't be that large I don't think
|
||||||
return civInfo.getMatchingUniques(placeholderText, this) +
|
return civInfo.getMatchingUniques(placeholderText, this) +
|
||||||
localUniques.filter { it.placeholderText == placeholderText }
|
localUniques.filter {
|
||||||
|
it.placeholderText == placeholderText
|
||||||
|
&& it.params.none { param -> param == "in other cities" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Matching uniques provided by sources in the city itself
|
// Matching uniques provided by sources in the city itself
|
||||||
fun getLocalMatchingUniques(placeholderText: String): Sequence<Unique> {
|
fun getLocalMatchingUniques(placeholderText: String): Sequence<Unique> {
|
||||||
return cityConstructions.builtBuildingUniqueMap.getUniques(placeholderText) +
|
return cityConstructions.builtBuildingUniqueMap.getUniques(placeholderText)
|
||||||
|
.filter { it.params.none { param -> param == "in other cities" } } +
|
||||||
religion.getMatchingUniques(placeholderText)
|
religion.getMatchingUniques(placeholderText)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -420,7 +420,7 @@ class CityStats(val cityInfo: CityInfo) {
|
|||||||
|
|
||||||
newHappinessList["National ability"] = getStatsFromUniques(cityInfo.civInfo.nation.uniqueObjects.asSequence()).happiness
|
newHappinessList["National ability"] = getStatsFromUniques(cityInfo.civInfo.nation.uniqueObjects.asSequence()).happiness
|
||||||
|
|
||||||
newHappinessList["Wonders"] = getStatsFromUniques(civInfo.getCivWideBuildingUniques()).happiness
|
newHappinessList["Wonders"] = getStatsFromUniques(civInfo.getCivWideBuildingUniques(cityInfo)).happiness
|
||||||
|
|
||||||
newHappinessList["Religion"] = getStatsFromUniques(cityInfo.religion.getUniques()).happiness
|
newHappinessList["Religion"] = getStatsFromUniques(cityInfo.religion.getUniques()).happiness
|
||||||
|
|
||||||
@ -445,7 +445,7 @@ class CityStats(val cityInfo: CityInfo) {
|
|||||||
newBaseStatList["Buildings"] = cityInfo.cityConstructions.getStats()
|
newBaseStatList["Buildings"] = cityInfo.cityConstructions.getStats()
|
||||||
newBaseStatList["Policies"] = getStatsFromUniques(civInfo.policies.policyUniques.getAllUniques())
|
newBaseStatList["Policies"] = getStatsFromUniques(civInfo.policies.policyUniques.getAllUniques())
|
||||||
newBaseStatList["National ability"] = getStatsFromNationUnique()
|
newBaseStatList["National ability"] = getStatsFromNationUnique()
|
||||||
newBaseStatList["Wonders"] = getStatsFromUniques(civInfo.getCivWideBuildingUniques())
|
newBaseStatList["Wonders"] = getStatsFromUniques(civInfo.getCivWideBuildingUniques(cityInfo))
|
||||||
newBaseStatList["City-States"] = getStatsFromCityStates()
|
newBaseStatList["City-States"] = getStatsFromCityStates()
|
||||||
newBaseStatList["Religion"] = getStatsFromUniques(cityInfo.religion.getUniques())
|
newBaseStatList["Religion"] = getStatsFromUniques(cityInfo.religion.getUniques())
|
||||||
|
|
||||||
@ -459,7 +459,7 @@ class CityStats(val cityInfo: CityInfo) {
|
|||||||
newStatPercentBonusList["Policies"] = getStatPercentBonusesFromUniques(currentConstruction, cityInfo.civInfo.policies.policyUniques.getAllUniques())
|
newStatPercentBonusList["Policies"] = getStatPercentBonusesFromUniques(currentConstruction, cityInfo.civInfo.policies.policyUniques.getAllUniques())
|
||||||
newStatPercentBonusList["Buildings"] = getStatPercentBonusesFromUniques(currentConstruction, localBuildingUniques)
|
newStatPercentBonusList["Buildings"] = getStatPercentBonusesFromUniques(currentConstruction, localBuildingUniques)
|
||||||
.plus(cityInfo.cityConstructions.getStatPercentBonuses()) // This function is to be deprecated but it'll take a while.
|
.plus(cityInfo.cityConstructions.getStatPercentBonuses()) // This function is to be deprecated but it'll take a while.
|
||||||
newStatPercentBonusList["Wonders"] = getStatPercentBonusesFromUniques(currentConstruction, cityInfo.civInfo.getCivWideBuildingUniques())
|
newStatPercentBonusList["Wonders"] = getStatPercentBonusesFromUniques(currentConstruction, cityInfo.civInfo.getCivWideBuildingUniques(cityInfo))
|
||||||
newStatPercentBonusList["Railroads"] = getStatPercentBonusesFromRailroad() // Name chosen same as tech, for translation, but theoretically independent
|
newStatPercentBonusList["Railroads"] = getStatPercentBonusesFromRailroad() // Name chosen same as tech, for translation, but theoretically independent
|
||||||
newStatPercentBonusList["Resources"] = getStatPercentBonusesFromResources(currentConstruction)
|
newStatPercentBonusList["Resources"] = getStatPercentBonusesFromResources(currentConstruction)
|
||||||
newStatPercentBonusList["National ability"] = getStatPercentBonusesFromNationUnique(currentConstruction)
|
newStatPercentBonusList["National ability"] = getStatPercentBonusesFromNationUnique(currentConstruction)
|
||||||
|
@ -276,9 +276,13 @@ class CivilizationInfo {
|
|||||||
|
|
||||||
fun hasResource(resourceName: String): Boolean = getCivResourcesByName()[resourceName]!! > 0
|
fun hasResource(resourceName: String): Boolean = getCivResourcesByName()[resourceName]!! > 0
|
||||||
|
|
||||||
fun getCivWideBuildingUniques(): Sequence<Unique> = cities.asSequence().flatMap {
|
fun getCivWideBuildingUniques(cityItIsFor: CityInfo?): Sequence<Unique> =
|
||||||
city -> city.getAllUniquesWithNonLocalEffects()
|
cities.asSequence().flatMap {
|
||||||
}
|
city ->
|
||||||
|
if (cityItIsFor != null && city == cityItIsFor)
|
||||||
|
city.getAllUniquesWithNonLocalEffects().filter { it.params.none { param -> param == "in other cities" } }
|
||||||
|
else city.getAllUniquesWithNonLocalEffects()
|
||||||
|
}
|
||||||
|
|
||||||
fun hasUnique(unique: String) = getMatchingUniques(unique).any()
|
fun hasUnique(unique: String) = getMatchingUniques(unique).any()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user