mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 22:06:05 -04:00
Railroad connection propagates correctly over harbor connections
This commit is contained in:
parent
b816d1036d
commit
9d2cc90ccd
@ -362,9 +362,11 @@ class CityStats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun isConnectedToCapital(roadType: RoadStatus): Boolean {
|
fun isConnectedToCapital(roadType: RoadStatus): Boolean {
|
||||||
if (cityInfo.civInfo.cities.count() < 2) return false// first city!
|
if (cityInfo.civInfo.cities .count() < 2) return false// first city!
|
||||||
|
|
||||||
return cityInfo.isConnectedToCapital { it.contains(roadType.name) || it.contains("Harbor") }
|
// Railroad, or harbor from railroad
|
||||||
|
if (roadType == RoadStatus.Railroad) return cityInfo.isConnectedToCapital { it.any { it.contains("Railroad") } }
|
||||||
|
else return cityInfo.isConnectedToCapital()
|
||||||
}
|
}
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
|
@ -19,7 +19,8 @@ class CapitalConnectionsFinder(private val civInfo: CivilizationInfo) {
|
|||||||
|
|
||||||
private val road = RoadStatus.Road.name
|
private val road = RoadStatus.Road.name
|
||||||
private val railroad = RoadStatus.Railroad.name
|
private val railroad = RoadStatus.Railroad.name
|
||||||
private val harbor = "Harbor"
|
private val harborFromRoad = "Harbor-Road"
|
||||||
|
private val harborFromRailroad = "Harbor-Railroad"
|
||||||
|
|
||||||
init {
|
init {
|
||||||
citiesReachedToMediums[civInfo.getCapital()] = hashSetOf("Start")
|
citiesReachedToMediums[civInfo.getCapital()] = hashSetOf("Start")
|
||||||
@ -36,8 +37,10 @@ class CapitalConnectionsFinder(private val civInfo: CivilizationInfo) {
|
|||||||
if (cityToConnectFrom.containsHarbor()) {
|
if (cityToConnectFrom.containsHarbor()) {
|
||||||
checkHarbor(cityToConnectFrom)
|
checkHarbor(cityToConnectFrom)
|
||||||
}
|
}
|
||||||
if (railroadIsResearched) {
|
if (railroadIsResearched){
|
||||||
checkRailroad(cityToConnectFrom)
|
val mediumsReached= citiesReachedToMediums[cityToConnectFrom]!!
|
||||||
|
if(mediumsReached.contains("Start") || mediumsReached.contains(railroad) || mediumsReached.contains(harborFromRailroad))
|
||||||
|
checkRailroad(cityToConnectFrom) // This is only relevant for city connection if there is an unbreaking line from the capital
|
||||||
}
|
}
|
||||||
if (theWheelIsResearched) {
|
if (theWheelIsResearched) {
|
||||||
checkRoad(cityToConnectFrom)
|
checkRoad(cityToConnectFrom)
|
||||||
@ -61,21 +64,22 @@ class CapitalConnectionsFinder(private val civInfo: CivilizationInfo) {
|
|||||||
check(
|
check(
|
||||||
cityToConnectFrom,
|
cityToConnectFrom,
|
||||||
transportType = railroad,
|
transportType = railroad,
|
||||||
tileFilter = { tile -> tile.hasRailroad() || tile.isCityCenter() }
|
tileFilter = { tile -> tile.roadStatus == RoadStatus.Railroad || tile.isCityCenter() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkHarbor(cityToConnectFrom: CityInfo) {
|
private fun checkHarbor(cityToConnectFrom: CityInfo) {
|
||||||
check(
|
check(
|
||||||
cityToConnectFrom,
|
cityToConnectFrom,
|
||||||
transportType = harbor,
|
transportType = if(cityToConnectFrom.wasPreviouslyReached("Railroad",null)) harborFromRailroad else harborFromRoad,
|
||||||
|
overridingTransportType = harborFromRailroad,
|
||||||
tileFilter = { tile -> tile.isWater || tile.isCityCenter() },
|
tileFilter = { tile -> tile.isWater || tile.isCityCenter() },
|
||||||
cityFilter = { city -> city.containsHarbor() }
|
cityFilter = { city -> city.containsHarbor() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun CityInfo.containsHarbor() =
|
private fun CityInfo.containsHarbor() =
|
||||||
this.cityConstructions.containsBuildingOrEquivalent(harbor)
|
this.cityConstructions.containsBuildingOrEquivalent("Harbor")
|
||||||
|
|
||||||
private fun check(cityToConnectFrom: CityInfo,
|
private fun check(cityToConnectFrom: CityInfo,
|
||||||
transportType: String,
|
transportType: String,
|
||||||
|
@ -447,8 +447,6 @@ open class TileInfo {
|
|||||||
fun hasConnection(civInfo: CivilizationInfo) =
|
fun hasConnection(civInfo: CivilizationInfo) =
|
||||||
roadStatus != RoadStatus.None || forestOrJungleAreRoads(civInfo)
|
roadStatus != RoadStatus.None || forestOrJungleAreRoads(civInfo)
|
||||||
|
|
||||||
fun hasRailroad() =
|
|
||||||
roadStatus == RoadStatus.Railroad
|
|
||||||
|
|
||||||
private fun forestOrJungleAreRoads(civInfo: CivilizationInfo) =
|
private fun forestOrJungleAreRoads(civInfo: CivilizationInfo) =
|
||||||
civInfo.nation.forestsAndJunglesAreRoads
|
civInfo.nation.forestsAndJunglesAreRoads
|
||||||
|
Loading…
x
Reference in New Issue
Block a user