Skip to content

Commit

Permalink
findFurthestTile no longer crashes when the unit has no tiles it can …
Browse files Browse the repository at this point in the history
…move to
  • Loading branch information
yairm210 committed Jan 18, 2020
1 parent 90abfda commit 6663763
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions core/src/com/unciv/logic/automation/BarbarianAutomation.kt
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,10 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
val possibleHeal = unit.rankTileForHealing(unit.currentTile)
if (possibleDamage > possibleHeal) {
// run
val furthestTile = findFurthestTile(unit, unitDistanceToTiles, nearEnemyTiles)
unit.movement.moveToTile(furthestTile)
} else {
// heal
unit.fortifyIfCan()
val furthestTile = findFurthestTileCanMoveTo(unit, unitDistanceToTiles, nearEnemyTiles)
if(furthestTile!=null) unit.movement.moveToTile(furthestTile)
}
unit.fortifyIfCan()
return
}

Expand Down Expand Up @@ -101,8 +99,8 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
// 1 - heal or run if death is near
if (unit.health < 50) {
if (nearEnemyTiles.isNotEmpty()) {
val furthestTile = findFurthestTile(unit, unitDistanceToTiles, nearEnemyTiles)
unit.movement.moveToTile(furthestTile)
val furthestTile = findFurthestTileCanMoveTo(unit, unitDistanceToTiles, nearEnemyTiles)
if(furthestTile!=null) unit.movement.moveToTile(furthestTile)
}
unit.fortifyIfCan()

Expand All @@ -125,12 +123,13 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
UnitAutomation().wander(unit, unitDistanceToTiles)
}

private fun findFurthestTile(
private fun findFurthestTileCanMoveTo(
unit: MapUnit,
unitDistanceToTiles: PathsToTilesWithinTurn,
nearEnemyTiles: List<AttackableTile>
): TileInfo {
): TileInfo? {
val possibleTiles = unitDistanceToTiles.keys.filter { unit.movement.canMoveTo(it) }
if(possibleTiles.isEmpty()) return null
val enemies = nearEnemyTiles.mapNotNull { it.tileToAttack.militaryUnit }
var furthestTile: Pair<TileInfo, Float> = possibleTiles.random() to 0f
for (enemy in enemies) {
Expand Down

0 comments on commit 6663763

Please sign in to comment.