Only require explicit building/wonder costs for tech columns that have buildings/wonders with unspecified cost

This commit is contained in:
Yair Morgenstern 2024-02-27 14:05:53 +02:00
parent 27d63f00f4
commit 817ac64e58

View File

@ -626,14 +626,22 @@ class RulesetValidator(val ruleset: Ruleset) {
for (techColumn in ruleset.techColumns) { for (techColumn in ruleset.techColumns) {
if (techColumn.columnNumber < 0) if (techColumn.columnNumber < 0)
lines.add("Tech Column number ${techColumn.columnNumber} is negative", sourceObject = null) lines.add("Tech Column number ${techColumn.columnNumber} is negative", sourceObject = null)
if (techColumn.buildingCost == -1)
val buildingsWithoutAssignedCost = ruleset.buildings.values.filter {
it.cost == -1 && techColumn.techs.map { it.name }.contains(it.requiredTech) }.toList()
val nonWondersWithoutAssignedCost = buildingsWithoutAssignedCost.filter { !it.isAnyWonder() }
if (techColumn.buildingCost == -1 && nonWondersWithoutAssignedCost.any())
lines.add( lines.add(
"Tech Column number ${techColumn.columnNumber} has no explicit building cost", "Tech Column number ${techColumn.columnNumber} has no explicit building cost leaving "+nonWondersWithoutAssignedCost.joinToString()+" unassigned",
RulesetErrorSeverity.Warning, sourceObject = null RulesetErrorSeverity.Warning, sourceObject = null
) )
if (techColumn.wonderCost == -1)
val wondersWithoutAssignedCost = buildingsWithoutAssignedCost.filter { it.isAnyWonder() }
if (techColumn.wonderCost == -1 && wondersWithoutAssignedCost.any())
lines.add( lines.add(
"Tech Column number ${techColumn.columnNumber} has no explicit wonder cost", "Tech Column number ${techColumn.columnNumber} has no explicit wonder cost leaving "+wondersWithoutAssignedCost.joinToString()+" unassigned",
RulesetErrorSeverity.Warning, sourceObject = null RulesetErrorSeverity.Warning, sourceObject = null
) )
} }