mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-23 06:08:46 +07:00
Fixes to unit moving through occupied tiles
This commit is contained in:
@ -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) {
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user