From 43ff2ac1f587b5f3a45d9ad3d2c7ffb65c1e1f97 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 1 Oct 2023 15:29:04 +0300 Subject: [PATCH] Fixed unique validation refactor breaks --- core/src/com/unciv/models/ruleset/Ruleset.kt | 5 +++-- core/src/com/unciv/models/ruleset/unique/Unique.kt | 4 ++-- .../models/ruleset/validation/UniqueValidator.kt | 6 +++--- core/src/com/unciv/ui/popups/options/ModCheckTab.kt | 12 ++++++------ 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/core/src/com/unciv/models/ruleset/Ruleset.kt b/core/src/com/unciv/models/ruleset/Ruleset.kt index 5a0cecad18..a39098b3d9 100644 --- a/core/src/com/unciv/models/ruleset/Ruleset.kt +++ b/core/src/com/unciv/models/ruleset/Ruleset.kt @@ -21,6 +21,7 @@ import com.unciv.models.ruleset.unit.BaseUnit import com.unciv.models.ruleset.unit.Promotion import com.unciv.models.ruleset.unit.UnitType import com.unciv.models.ruleset.validation.RulesetValidator +import com.unciv.models.ruleset.validation.UniqueValidator import com.unciv.models.stats.INamed import com.unciv.models.translations.tr import com.unciv.utils.Log @@ -378,7 +379,7 @@ class Ruleset { name = cityStateType.name color = cityStateType.color friendBonusUniques = ArrayList(cityStateType.friendBonusUniques.filter { - RulesetValidator(this@Ruleset).checkUnique( + UniqueValidator(this@Ruleset).checkUnique( Unique(it), false, cityStateType, @@ -386,7 +387,7 @@ class Ruleset { ).isEmpty() }) allyBonusUniques = ArrayList(cityStateType.allyBonusUniques.filter { - RulesetValidator(this@Ruleset).checkUnique( + UniqueValidator(this@Ruleset).checkUnique( Unique(it), false, cityStateType, diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index ff61b94b87..7bb5a663fd 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -8,7 +8,7 @@ import com.unciv.logic.city.City import com.unciv.logic.civilization.Civilization import com.unciv.logic.civilization.managers.ReligionState import com.unciv.models.ruleset.Ruleset -import com.unciv.models.ruleset.validation.RulesetValidator +import com.unciv.models.ruleset.validation.UniqueValidator import com.unciv.models.stats.Stats import com.unciv.models.translations.getConditionals import com.unciv.models.translations.getPlaceholderParameters @@ -119,7 +119,7 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s // filter out possible replacements that are obviously wrong val uniquesWithNoErrors = finalPossibleUniques.filter { val unique = Unique(it) - val errors = RulesetValidator(ruleset).checkUnique( + val errors = UniqueValidator(ruleset).checkUnique( unique, true, null, UniqueType.UniqueComplianceErrorSeverity.RulesetSpecific ) diff --git a/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt b/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt index 4fd99d453a..89a6b3397a 100644 --- a/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt +++ b/core/src/com/unciv/models/ruleset/validation/UniqueValidator.kt @@ -85,7 +85,7 @@ class UniqueValidator(val ruleset: Ruleset) { ) return } - + if (conditional.type.targetTypes.none { it.modifierType != UniqueTarget.ModifierType.None }) rulesetErrors.add( "$prefix unique \"${unique.text}\" contains the conditional \"${conditional.text}\"," + @@ -94,11 +94,11 @@ class UniqueValidator(val ruleset: Ruleset) { ) if (conditional.type.targetTypes.contains(UniqueTarget.UnitActionModifier) - && conditional.type.targetTypes.none { UniqueTarget.UnitAction.canAcceptUniqueTarget(it) } + && unique.type!!.targetTypes.none { UniqueTarget.UnitAction.canAcceptUniqueTarget(it) } ) rulesetErrors.add( "$prefix unique \"${unique.text}\" contains the conditional \"${conditional.text}\"," + - " which as a UnitActionModifier is only allowed on UnitAciton uniques.", + " which as a UnitActionModifier is only allowed on UnitAction uniques.", RulesetErrorSeverity.Warning ) diff --git a/core/src/com/unciv/ui/popups/options/ModCheckTab.kt b/core/src/com/unciv/ui/popups/options/ModCheckTab.kt index 03630b8bfc..600161c2ae 100644 --- a/core/src/com/unciv/ui/popups/options/ModCheckTab.kt +++ b/core/src/com/unciv/ui/popups/options/ModCheckTab.kt @@ -7,14 +7,15 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.utils.Align import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.RulesetCache -import com.unciv.models.ruleset.validation.RulesetError -import com.unciv.models.ruleset.validation.RulesetErrorSeverity -import com.unciv.models.ruleset.validation.RulesetValidator import com.unciv.models.ruleset.unique.Unique import com.unciv.models.ruleset.unique.UniqueType +import com.unciv.models.ruleset.validation.RulesetError +import com.unciv.models.ruleset.validation.RulesetErrorSeverity +import com.unciv.models.ruleset.validation.UniqueValidator import com.unciv.models.translations.tr import com.unciv.ui.components.ExpanderTab import com.unciv.ui.components.TabbedPager +import com.unciv.ui.components.TranslatedSelectBox import com.unciv.ui.components.extensions.surroundWithCircle import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toTextButton @@ -23,7 +24,6 @@ import com.unciv.ui.components.input.onClick import com.unciv.ui.images.ImageGetter import com.unciv.ui.popups.ToastPopup import com.unciv.ui.screens.basescreen.BaseScreen -import com.unciv.ui.components.TranslatedSelectBox import com.unciv.utils.Concurrency import com.unciv.utils.Log import com.unciv.utils.debug @@ -200,7 +200,7 @@ class ModCheckTab( uniqueReplacementText += " <${conditional.text}>" val replacementUnique = Unique(uniqueReplacementText) - val modInvariantErrors = RulesetValidator(mod).checkUnique( + val modInvariantErrors = UniqueValidator(mod).checkUnique( replacementUnique, false, null, @@ -211,7 +211,7 @@ class ModCheckTab( if (modInvariantErrors.isNotEmpty()) continue // errors means no autoreplace if (mod.modOptions.isBaseRuleset) { - val modSpecificErrors = RulesetValidator(mod).checkUnique( + val modSpecificErrors = UniqueValidator(mod).checkUnique( replacementUnique, false, null,