mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-26 21:35:14 -04:00
Fix "Religions to be founded" count (#7278)
This commit is contained in:
parent
e0a65fb95a
commit
b716d4a68d
@ -7,6 +7,7 @@ import com.unciv.models.ruleset.Belief
|
|||||||
import com.unciv.models.ruleset.BeliefType
|
import com.unciv.models.ruleset.BeliefType
|
||||||
import com.unciv.models.ruleset.unique.UniqueType
|
import com.unciv.models.ruleset.unique.UniqueType
|
||||||
import com.unciv.ui.utils.extensions.toPercent
|
import com.unciv.ui.utils.extensions.toPercent
|
||||||
|
import java.lang.Integer.min
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
class ReligionManager {
|
class ReligionManager {
|
||||||
@ -150,6 +151,29 @@ class ReligionManager {
|
|||||||
|
|
||||||
fun amountOfFoundableReligions() = civInfo.gameInfo.civilizations.count { it.isMajorCiv() } / 2 + 1
|
fun amountOfFoundableReligions() = civInfo.gameInfo.civilizations.count { it.isMajorCiv() } / 2 + 1
|
||||||
|
|
||||||
|
fun remainingFoundableReligions(): Int {
|
||||||
|
val foundedReligionsCount = civInfo.gameInfo.civilizations.count {
|
||||||
|
it.religionManager.religion != null && it.religionManager.religionState >= ReligionState.Religion
|
||||||
|
}
|
||||||
|
|
||||||
|
// count the number of foundable religions left given defined ruleset religions and number of civs in game
|
||||||
|
val maxNumberOfAdditionalReligions = min(civInfo.gameInfo.ruleSet.religions.size,
|
||||||
|
amountOfFoundableReligions()) - foundedReligionsCount
|
||||||
|
|
||||||
|
val availableBeliefsToFound = min(
|
||||||
|
civInfo.gameInfo.ruleSet.beliefs.values.count {
|
||||||
|
it.type == BeliefType.Follower
|
||||||
|
&& civInfo.gameInfo.religions.values.none { religion -> it in religion.getBeliefs(BeliefType.Follower) }
|
||||||
|
},
|
||||||
|
civInfo.gameInfo.ruleSet.beliefs.values.count {
|
||||||
|
it.type == BeliefType.Founder
|
||||||
|
&& civInfo.gameInfo.religions.values.none { religion -> it in religion.getBeliefs(BeliefType.Founder) }
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return min(maxNumberOfAdditionalReligions, availableBeliefsToFound)
|
||||||
|
}
|
||||||
|
|
||||||
fun mayFoundReligionAtAll(prophet: MapUnit): Boolean {
|
fun mayFoundReligionAtAll(prophet: MapUnit): Boolean {
|
||||||
if (!civInfo.gameInfo.isReligionEnabled()) return false // No religion
|
if (!civInfo.gameInfo.isReligionEnabled()) return false // No religion
|
||||||
|
|
||||||
@ -160,25 +184,9 @@ class ReligionManager {
|
|||||||
|
|
||||||
if (!civInfo.isMajorCiv()) return false // Only major civs may use religion
|
if (!civInfo.isMajorCiv()) return false // Only major civs may use religion
|
||||||
|
|
||||||
val foundedReligionsCount = civInfo.gameInfo.civilizations.count {
|
if (remainingFoundableReligions() == 0)
|
||||||
it.religionManager.religion != null && it.religionManager.religionState >= ReligionState.Religion
|
|
||||||
}
|
|
||||||
|
|
||||||
if (foundedReligionsCount >= amountOfFoundableReligions())
|
|
||||||
return false // Too bad, too many religions have already been founded
|
return false // Too bad, too many religions have already been founded
|
||||||
|
|
||||||
if (foundedReligionsCount >= civInfo.gameInfo.ruleSet.religions.size)
|
|
||||||
return false // Mod maker did not provide enough religions for the amount of civs present
|
|
||||||
|
|
||||||
if (civInfo.gameInfo.ruleSet.beliefs.values.none {
|
|
||||||
it.type == BeliefType.Follower
|
|
||||||
&& civInfo.gameInfo.religions.values.none { religion -> it in religion.getBeliefs(BeliefType.Follower) }
|
|
||||||
}) return false // Mod maker did not provide enough follower beliefs
|
|
||||||
|
|
||||||
// Shortcut as each religion will always have exactly one founder belief
|
|
||||||
if (foundedReligionsCount >= civInfo.gameInfo.ruleSet.beliefs.values.count { it.type == BeliefType.Founder })
|
|
||||||
return false // Mod maker did not provide enough founder beliefs
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,9 +79,7 @@ class ReligionOverviewTab(
|
|||||||
}
|
}
|
||||||
|
|
||||||
add("Religions to be founded:".toLabel())
|
add("Religions to be founded:".toLabel())
|
||||||
|
add((viewingPlayer.religionManager.remainingFoundableReligions()).toLabel()).right().row()
|
||||||
val foundedReligions = viewingPlayer.gameInfo.civilizations.count { it.religionManager.religionState >= ReligionState.Religion }
|
|
||||||
add((viewingPlayer.religionManager.amountOfFoundableReligions() - foundedReligions).toLabel()).right().row()
|
|
||||||
|
|
||||||
add("Religious status:".toLabel()).left()
|
add("Religious status:".toLabel()).left()
|
||||||
add(viewingPlayer.religionManager.religionState.toString().toLabel()).right().row()
|
add(viewingPlayer.religionManager.religionState.toString().toLabel()).right().row()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user