diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index 2b41926469..5be80e0b07 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -146,7 +146,7 @@ class GameInfo { } val totalBarbariansAllowedOnMap = encampments.size * 3 - var extraBarbarians = totalBarbariansAllowedOnMap - getBarbarianCivilization().getCivUnits().size + var extraBarbarians = totalBarbariansAllowedOnMap - getBarbarianCivilization().getCivUnits().count() for (tile in tileMap.values.filter { it.improvement == Constants.barbarianEncampment }) { if (extraBarbarians <= 0) break diff --git a/core/src/com/unciv/logic/automation/ConstructionAutomation.kt b/core/src/com/unciv/logic/automation/ConstructionAutomation.kt index 842fce2edb..68486903c8 100644 --- a/core/src/com/unciv/logic/automation/ConstructionAutomation.kt +++ b/core/src/com/unciv/logic/automation/ConstructionAutomation.kt @@ -24,8 +24,8 @@ class ConstructionAutomation(val cityConstructions: CityConstructions){ .filter { it.isWonder || it.isNationalWonder } val civUnits = civInfo.getCivUnits() - val militaryUnits = civUnits.filter { !it.type.isCivilian()}.size - val workers = civUnits.filter { it.name == Constants.worker }.size.toFloat() + val militaryUnits = civUnits.filter { !it.type.isCivilian()}.count() + val workers = civUnits.filter { it.name == Constants.worker }.count().toFloat() val cities = civInfo.cities.size val canBuildWorkboat = cityInfo.cityConstructions.getConstructableUnits().map { it.name }.contains("Work Boats") && !cityInfo.getTiles().any { it.civilianUnit?.name == "Work Boats" } diff --git a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt index 85ea29747a..ec3511fc3f 100644 --- a/core/src/com/unciv/logic/automation/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/NextTurnAutomation.kt @@ -391,7 +391,7 @@ class NextTurnAutomation{ enemy.tradeRequests.add(TradeRequest(civInfo.civName, tradeLogic.currentTrade.reverse())) else { if (enemy.victoryType()!=VictoryType.Cultural - && enemy.getCivUnits().filter { !it.type.isCivilian() }.size > enemy.cities.size + && enemy.getCivUnits().filter { !it.type.isCivilian() }.count() > enemy.cities.size && enemy.getHappiness() > 0) { continue //enemy AI has too large army and happiness. It continues to fight for profit. } @@ -425,7 +425,7 @@ class NextTurnAutomation{ if (civInfo.cities.isEmpty() || civInfo.diplomacy.isEmpty()) return if (civInfo.isAtWar() || civInfo.getHappiness() <= 0) return - val ourMilitaryUnits = civInfo.getCivUnits().filter { !it.type.isCivilian() }.size + val ourMilitaryUnits = civInfo.getCivUnits().filter { !it.type.isCivilian() }.count() if (ourMilitaryUnits < civInfo.cities.size) return //evaluate war diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index a3b6d10c5a..1db05b592d 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -193,7 +193,7 @@ class CivilizationInfo { //region Units - fun getCivUnits(): List = units + fun getCivUnits(): Sequence = units.asSequence() fun addUnit(mapUnit: MapUnit, updateCivInfo:Boolean=true){ val newList = ArrayList(units) @@ -220,12 +220,12 @@ class CivilizationInfo { fun getDueUnits() = getCivUnits().filter { it.due && it.isIdle() } - fun shouldGoToDueUnit() = UncivGame.Current.settings.checkForDueUnits && getDueUnits().isNotEmpty() + fun shouldGoToDueUnit() = UncivGame.Current.settings.checkForDueUnits && getDueUnits().any() fun getNextDueUnit(): MapUnit? { val dueUnits = getDueUnits() - if(dueUnits.isNotEmpty()) { - val unit = dueUnits[0] + if(dueUnits.any()) { + val unit = dueUnits.first() unit.due = false return unit } @@ -407,7 +407,7 @@ class CivilizationInfo { if (!isBarbarian() && gold < -100 && nextTurnStats.gold.toInt() < 0) { for (i in 1 until (gold / -100)) { var civMilitaryUnits = getCivUnits().filter { !it.type.isCivilian() } - if (civMilitaryUnits.isNotEmpty()) { + if (civMilitaryUnits.any()) { val unitToDisband = civMilitaryUnits.first() unitToDisband.destroy() civMilitaryUnits -= unitToDisband diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 8a4846917f..9fc9542910 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -553,9 +553,11 @@ class MapUnit { } fun canIntercept(attackedTile: TileInfo): Boolean { - return interceptChance()!=0 - && (attacksThisTurn==0 || hasUnique("1 extra Interception may be made per turn") && attacksThisTurn<2) - && currentTile.arialDistanceTo(attackedTile) <= baseUnit.interceptRange + if(attacksThisTurn>1) return false + if(interceptChance()==0) return false + if(attacksThisTurn>0 && !hasUnique("1 extra Interception may be made per turn")) return false + if(currentTile.arialDistanceTo(attackedTile) > baseUnit.interceptRange) return false + return true } fun interceptChance():Int{ diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt index ec7eafc596..5a398b6e59 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt @@ -110,7 +110,7 @@ class WorldScreen(val viewingCiv:CivilizationInfo) : CameraStageBaseScreen() { val tileToCenterOn: Vector2 = when { viewingCiv.cities.isNotEmpty() -> viewingCiv.getCapital().location - viewingCiv.getCivUnits().isNotEmpty() -> viewingCiv.getCivUnits().first().getTile().position + viewingCiv.getCivUnits().any() -> viewingCiv.getCivUnits().first().getTile().position else -> Vector2.Zero } mapHolder.setCenterPosition(tileToCenterOn,true) diff --git a/core/src/com/unciv/ui/worldscreen/unit/IdleUnitButton.kt b/core/src/com/unciv/ui/worldscreen/unit/IdleUnitButton.kt index 92145480ac..4b32b8c4e7 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/IdleUnitButton.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/IdleUnitButton.kt @@ -17,7 +17,7 @@ class IdleUnitButton ( val image = ImageGetter.getImage("OtherIcons/BackArrow") - fun hasIdleUnits() = unitTable.worldScreen.viewingCiv.getIdleUnits().isNotEmpty() + fun hasIdleUnits() = unitTable.worldScreen.viewingCiv.getIdleUnits().any() init { val imageSize = 25f @@ -31,17 +31,17 @@ class IdleUnitButton ( onClick { val idleUnits = unitTable.worldScreen.viewingCiv.getIdleUnits() - if(idleUnits.isEmpty()) return@onClick + if(idleUnits.none()) return@onClick val unitToSelect: MapUnit if (unitTable.selectedUnit==null || !idleUnits.contains(unitTable.selectedUnit!!)) - unitToSelect = idleUnits[0] + unitToSelect = idleUnits.first() else { var index = idleUnits.indexOf(unitTable.selectedUnit!!) if(previous) index-- else index++ - index += idleUnits.size - index %= idleUnits.size // for looping - unitToSelect = idleUnits[index] + index += idleUnits.count() + index %= idleUnits.count() // for looping + unitToSelect = idleUnits.elementAt(index) } unitToSelect.due = false