mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-26 21:35:14 -04:00
perf: Resolved #11775
This commit is contained in:
parent
94acb75967
commit
0d91cf9983
@ -169,7 +169,7 @@ class CivInfoStatsForNextTurn(val civInfo: Civilization) {
|
|||||||
//City-States bonuses
|
//City-States bonuses
|
||||||
for (otherCiv in civInfo.getKnownCivs()) {
|
for (otherCiv in civInfo.getKnownCivs()) {
|
||||||
if (!otherCiv.isCityState()) continue
|
if (!otherCiv.isCityState()) continue
|
||||||
if (!otherCiv.getDiplomacyManager(civInfo.civName)!!.isRelationshipLevelEQ(RelationshipLevel.Ally))
|
if (otherCiv.getDiplomacyManager(civInfo.civName)!!.relationshipIgnoreAfraid() != RelationshipLevel.Ally)
|
||||||
continue
|
continue
|
||||||
for (unique in civInfo.getMatchingUniques(UniqueType.CityStateStatPercent)) {
|
for (unique in civInfo.getMatchingUniques(UniqueType.CityStateStatPercent)) {
|
||||||
statMap.add(
|
statMap.add(
|
||||||
|
@ -174,13 +174,7 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
|
|||||||
override fun getRejectionReasons(cityConstructions: CityConstructions): Sequence<RejectionReason> = sequence {
|
override fun getRejectionReasons(cityConstructions: CityConstructions): Sequence<RejectionReason> = sequence {
|
||||||
if (isWaterUnit() && !cityConstructions.city.isCoastal())
|
if (isWaterUnit() && !cityConstructions.city.isCoastal())
|
||||||
yield(RejectionReasonType.WaterUnitsInCoastalCities.toInstance())
|
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
|
val civInfo = cityConstructions.city.civ
|
||||||
|
|
||||||
for (unique in getMatchingUniques(UniqueType.OnlyAvailable, StateForConditionals.IgnoreConditionals))
|
for (unique in getMatchingUniques(UniqueType.OnlyAvailable, StateForConditionals.IgnoreConditionals))
|
||||||
@ -197,6 +191,15 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
|
|||||||
yield(RejectionReasonType.PopulationRequirement.toInstance(unique.text))
|
yield(RejectionReasonType.PopulationRequirement.toInstance(unique.text))
|
||||||
|
|
||||||
yieldAll(getRejectionReasons(civInfo, cityConstructions.city))
|
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(
|
fun getRejectionReasons(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user