From 5750476cacc28f93dd88fa00388779ef28257a45 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 14 Apr 2021 16:33:00 +0300 Subject: [PATCH] Added check for implicit prerequisites that are specified explicitly in mods, to remove clutter in tech trees --- core/src/com/unciv/models/ruleset/Ruleset.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/src/com/unciv/models/ruleset/Ruleset.kt b/core/src/com/unciv/models/ruleset/Ruleset.kt index e97ad3f4dc..31eeca6bb5 100644 --- a/core/src/com/unciv/models/ruleset/Ruleset.kt +++ b/core/src/com/unciv/models/ruleset/Ruleset.kt @@ -318,6 +318,16 @@ class Ruleset { for (prereq in tech.prerequisites) { if (!technologies.containsKey(prereq)) lines += "${tech.name} requires tech $prereq which does not exist!" + + fun getPrereqTree(technologyName: String): Sequence { + val technology = technologies[technologyName] + if (technology == null) return sequenceOf() + return technology.prerequisites.asSequence() + technology.prerequisites.flatMap { getPrereqTree(it) } + } + + val allOtherPrereqs = tech.prerequisites.asSequence().filterNot { it == prereq }.flatMap { getPrereqTree(it) } + if (allOtherPrereqs.contains(prereq)) + println("No need to add $prereq as a prerequisite of ${tech.name} - it is already implicit from the other prerequisites!") } } return lines.joinToString("\n")