mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 22:37:02 -04:00
worker moves on working on road even when the path is blocked by other civilian units. Player will receive messages about those occasions.
This commit is contained in:
parent
d676c18aec
commit
73c273985f
@ -1,5 +1,6 @@
|
|||||||
package com.unciv.logic.map.action
|
package com.unciv.logic.map.action
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.unciv.logic.map.BFS
|
import com.unciv.logic.map.BFS
|
||||||
import com.unciv.logic.map.MapUnit
|
import com.unciv.logic.map.MapUnit
|
||||||
import com.unciv.logic.map.TileInfo
|
import com.unciv.logic.map.TileInfo
|
||||||
@ -38,6 +39,7 @@ class BuildLongRoadAction(
|
|||||||
if (stepForward(target)) {
|
if (stepForward(target)) {
|
||||||
startWorkingOnRoad()
|
startWorkingOnRoad()
|
||||||
} else if (unit.currentMovement > 1f) {
|
} else if (unit.currentMovement > 1f) {
|
||||||
|
unit.civInfo.addNotification("[${unit.name}] canceled building road: can't move forward.", unit.currentTile.position, Color.GRAY)
|
||||||
unit.action = null
|
unit.action = null
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -52,13 +54,17 @@ class BuildLongRoadAction(
|
|||||||
for (step in getPath(destination).drop(1)) {
|
for (step in getPath(destination).drop(1)) {
|
||||||
if(step !in tilesUnitCanCurrentlyReach) return false // we're out of tiles in reachable distance, no need to check any further
|
if(step !in tilesUnitCanCurrentlyReach) return false // we're out of tiles in reachable distance, no need to check any further
|
||||||
|
|
||||||
if (unit.currentMovement > 0f && unit.canMoveTo(step)) {
|
if (unit.currentMovement > 0f) {
|
||||||
unit.moveToTile(step)
|
if(unit.canMoveTo(step)) {
|
||||||
success = true
|
unit.moveToTile(step)
|
||||||
|
success = true
|
||||||
// if there is a road already, take multiple steps, otherwise this is where we're going to build a road
|
// if there is a road already, take multiple steps, otherwise this is where we're going to build a road
|
||||||
if (!isRoadFinished(step)) return true
|
if (!isRoadFinished(step)) return true
|
||||||
|
}
|
||||||
|
else if(!isRoadFinished(step)){
|
||||||
|
unit.civInfo.addNotification("[${unit.name}] skipped building road. It can't move here.", step.position, Color.GRAY)
|
||||||
|
}
|
||||||
|
// worker moves on even if the current step is blocked
|
||||||
} else break
|
} else break
|
||||||
}
|
}
|
||||||
return success
|
return success
|
||||||
|
Loading…
x
Reference in New Issue
Block a user