Fixes to unit moving through occupied tiles

This commit is contained in:
Yair Morgenstern
2019-07-21 23:43:17 +03:00
parent 15f1648ca4
commit 2604ff6ab6
2 changed files with 17 additions and 9 deletions

View File

@ -395,6 +395,16 @@ class MapUnit {
}
}
fun moveThroughTile(tile: TileInfo){
if(tile.improvement==Constants.ancientRuins && civInfo.isMajorCiv())
getAncientRuinBonus()
if(tile.improvement==Constants.barbarianEncampment && !civInfo.isBarbarianCivilization())
clearEncampment(tile)
currentTile = tile
updateViewableTiles()
}
fun putInTile(tile:TileInfo){
when {
!movement.canMoveTo(tile) -> throw Exception("I can't go there!")
@ -402,13 +412,7 @@ class MapUnit {
type.isCivilian() -> tile.civilianUnit=this
else -> tile.militaryUnit=this
}
currentTile = tile
if(tile.improvement==Constants.ancientRuins && civInfo.isMajorCiv())
getAncientRuinBonus()
if(tile.improvement==Constants.barbarianEncampment && !civInfo.isBarbarianCivilization())
clearEncampment(tile)
updateViewableTiles()
moveThroughTile(tile)
}
private fun clearEncampment(tile: TileInfo) {

View File

@ -236,11 +236,15 @@ class UnitMovementAlgorithms(val unit:MapUnit) {
if(unit.isFortified() || unit.action=="Set Up" || unit.action=="Sleep")
unit.action=null // unfortify/setup after moving
// Move through all intermediate tiles to get ancient ruins, barb encampments
// and to view tiles along the way
val pathToFinalTile = distanceToTiles.getPathToTile(destination)
unit.removeFromTile()
for(tile in pathToFinalTile){
unit.removeFromTile()
unit.putInTile(tile)
unit.moveThroughTile(tile)
}
unit.putInTile(destination)
}