Fixed a bug where an empty improvement picker screen could open (#5815)

* Fixed a bug where an empty improvement picker screen could open

* Moved the check for constructing instead of building to the unit
This commit is contained in:
Xander Lenstra
2021-12-25 16:53:10 +01:00
committed by GitHub
parent 759366c912
commit ea51c7155b
2 changed files with 8 additions and 2 deletions

View File

@ -1050,6 +1050,8 @@ class MapUnit {
}
fun canBuildImprovement(improvement: TileImprovement, tile: TileInfo = currentTile): Boolean {
// Workers (and similar) should never be able to (instantly) construct things, only build them
if (improvement.turnsToBuild == 0 && improvement.name != Constants.cancelImprovementOrder) return false
val matchingUniques = getMatchingUniques(UniqueType.BuildImprovements)
return matchingUniques.any { improvement.matchesFilter(it.params[0]) || tile.matchesTerrainFilter(it.params[0]) }
}

View File

@ -377,8 +377,12 @@ object UnitActions {
if (unit.isEmbarked()) return
val canConstruct = unit.currentMovement > 0
&& !tile.isCityCenter()
&& unit.civInfo.gameInfo.ruleSet.tileImprovements.values.any { tile.canBuildImprovement(it, unit.civInfo) && unit.canBuildImprovement(it) }
&& !tile.isCityCenter()
&& unit.civInfo.gameInfo.ruleSet.tileImprovements.values.any {
tile.canBuildImprovement(it, unit.civInfo)
&& unit.canBuildImprovement(it)
}
actionList += UnitAction(UnitActionType.ConstructImprovement,
isCurrentAction = unit.currentTile.hasImprovementInProgress(),