Resolved #8281 - Modding: allow roads/railroads with no required tech

This commit is contained in:
Yair Morgenstern 2023-01-25 21:04:54 +02:00
parent 18c6c9c91a
commit d91c10cb50
2 changed files with 12 additions and 7 deletions

View File

@ -478,13 +478,15 @@ class TechManager : IsPartOfGameInfoSerialization {
} }
fun getBestRoadAvailable(): RoadStatus { fun getBestRoadAvailable(): RoadStatus {
val roadImprovement = RoadStatus.Road.improvement(getRuleset()) // May not exist in mods val railroadImprovement = RoadStatus.Railroad.improvement(getRuleset()) // May not exist in mods
if (roadImprovement == null || !isResearched(roadImprovement.techRequired!!)) return RoadStatus.None if (railroadImprovement != null && (railroadImprovement.techRequired==null || isResearched(railroadImprovement.techRequired!!)))
return RoadStatus.Railroad
val railroadImprovement = RoadStatus.Railroad.improvement(getRuleset()) val roadImprovement = RoadStatus.Road.improvement(getRuleset())
val canBuildRailroad = railroadImprovement != null && isResearched(railroadImprovement.techRequired!!) if (roadImprovement != null && (roadImprovement.techRequired==null || isResearched(roadImprovement.techRequired!!)))
return RoadStatus.Road
return if (canBuildRailroad) RoadStatus.Railroad else RoadStatus.Road return RoadStatus.None
} }
fun canResearchTech(): Boolean { fun canResearchTech(): Boolean {

View File

@ -23,8 +23,11 @@ class CapitalConnectionsFinder(private val civInfo: Civilization) {
private val harborFromRailroad = "$harbor-$railroad" private val harborFromRailroad = "$harbor-$railroad"
private val ruleset = civInfo.gameInfo.ruleSet private val ruleset = civInfo.gameInfo.ruleSet
private val roadIsResearched = ruleset.tileImprovements.containsKey(road) && civInfo.tech.isResearched(ruleset.tileImprovements[road]!!.techRequired!!) private val roadIsResearched = ruleset.tileImprovements[road].let {
private val railroadIsResearched = ruleset.tileImprovements.containsKey(railroad) && civInfo.tech.isResearched(ruleset.tileImprovements[railroad]!!.techRequired!!) it != null && (it.techRequired==null || civInfo.tech.isResearched(it.techRequired!!)) }
private val railroadIsResearched = ruleset.tileImprovements[railroad].let {
it != null && (it.techRequired==null || civInfo.tech.isResearched(it.techRequired!!)) }
init { init {
citiesReachedToMediums[civInfo.getCapital()!!] = hashSetOf("Start") citiesReachedToMediums[civInfo.getCapital()!!] = hashSetOf("Start")