rankStatsForCityWork doesn't need to get cityStats as a parameter

This commit is contained in:
Yair Morgenstern 2024-03-13 22:26:11 +02:00
parent d05bb35129
commit ece8fe9a5c

View File

@ -25,12 +25,12 @@ object Automation {
fun rankTileForCityWork(tile: Tile, city: City, localUniqueCache: LocalUniqueCache = LocalUniqueCache(false)): Float {
val stats = tile.stats.getTileStats(city, city.civ, localUniqueCache)
return rankStatsForCityWork(stats, city, city.cityStats.currentCityStats, false, localUniqueCache)
return rankStatsForCityWork(stats, city, false, localUniqueCache)
}
fun rankSpecialist(specialist: String, city: City, localUniqueCache: LocalUniqueCache): Float {
val stats = city.cityStats.getStatsOfSpecialist(specialist, localUniqueCache)
var rank = rankStatsForCityWork(stats, city, city.cityStats.currentCityStats, true, localUniqueCache)
var rank = rankStatsForCityWork(stats, city, true, localUniqueCache)
// derive GPP score
var gpp = 0f
if (city.getRuleset().specialists.containsKey(specialist)) { // To solve problems in total remake mods
@ -43,13 +43,13 @@ object Automation {
}
fun rankStatsForCityWork(stats: Stats, city: City, cityStats: Stats, specialist: Boolean, localUniqueCache: LocalUniqueCache): Float {
fun rankStatsForCityWork(stats: Stats, city: City, areWeRankingSpecialist: Boolean, localUniqueCache: LocalUniqueCache): Float {
val cityAIFocus = city.getCityFocus()
val yieldStats = stats.clone()
val civPersonality = city.civ.getPersonality()
val cityStatsObj = city.cityStats
if (specialist) {
if (areWeRankingSpecialist) {
// If you have the Food Bonus, count as 1 extra food production (base is 2food)
for (unique in localUniqueCache.forCityGetMatchingUniques(city, UniqueType.FoodConsumptionBySpecialists))
if (city.matchesFilter(unique.params[1]))
@ -61,7 +61,7 @@ object Automation {
if (city.civ.getHappiness() < 0) yieldStats.happiness *= 2 // double weight for unhappy civilization
}
val surplusFood = cityStats[Stat.Food]
val surplusFood = city.cityStats.currentCityStats[Stat.Food]
// If current Production converts Food into Production, then calculate increased Production Yield
if (cityStatsObj.canConvertFoodToProduction(surplusFood, city.cityConstructions.getCurrentConstruction())) {
// calculate delta increase of food->prod. This isn't linear
@ -100,7 +100,7 @@ object Automation {
yieldStats.culture *= 2
yieldStats.culture *= civPersonality.scaledFocus(PersonalityValue.Culture)
if (city.civ.getHappiness() < 0 && !specialist) // since this doesn't get updated, may overshoot
if (city.civ.getHappiness() < 0 && !areWeRankingSpecialist) // since this doesn't get updated, may overshoot
yieldStats.happiness *= 2
yieldStats.happiness *= civPersonality.scaledFocus(PersonalityValue.Happiness)