perf: Resolved #11775

This commit is contained in:
yairm210
2024-06-19 17:05:10 +03:00
parent 94acb75967
commit 0d91cf9983
2 changed files with 11 additions and 8 deletions

View File

@ -169,7 +169,7 @@ class CivInfoStatsForNextTurn(val civInfo: Civilization) {
//City-States bonuses
for (otherCiv in civInfo.getKnownCivs()) {
if (!otherCiv.isCityState()) continue
if (!otherCiv.getDiplomacyManager(civInfo.civName)!!.isRelationshipLevelEQ(RelationshipLevel.Ally))
if (otherCiv.getDiplomacyManager(civInfo.civName)!!.relationshipIgnoreAfraid() != RelationshipLevel.Ally)
continue
for (unique in civInfo.getMatchingUniques(UniqueType.CityStateStatPercent)) {
statMap.add(

View File

@ -174,13 +174,7 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
override fun getRejectionReasons(cityConstructions: CityConstructions): Sequence<RejectionReason> = sequence {
if (isWaterUnit() && !cityConstructions.city.isCoastal())
yield(RejectionReasonType.WaterUnitsInCoastalCities.toInstance())
if (isAirUnit()) {
val fakeUnit = getMapUnit(cityConstructions.city.civ, Constants.NO_ID)
val canUnitEnterTile = fakeUnit.movement.canMoveTo(cityConstructions.city.getCenterTile())
if (!canUnitEnterTile)
yield(RejectionReasonType.NoPlaceToPutUnit.toInstance())
fakeUnit.destroy()
}
val civInfo = cityConstructions.city.civ
for (unique in getMatchingUniques(UniqueType.OnlyAvailable, StateForConditionals.IgnoreConditionals))
@ -197,6 +191,15 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
yield(RejectionReasonType.PopulationRequirement.toInstance(unique.text))
yieldAll(getRejectionReasons(civInfo, cityConstructions.city))
// Expensive, since adding and removing the fake unit causes side-effects
if (isAirUnit()) {
val fakeUnit = getMapUnit(cityConstructions.city.civ, Constants.NO_ID)
val canUnitEnterTile = fakeUnit.movement.canMoveTo(cityConstructions.city.getCenterTile())
if (!canUnitEnterTile)
yield(RejectionReasonType.NoPlaceToPutUnit.toInstance())
fakeUnit.destroy()
}
}
fun getRejectionReasons(