Fixed unique validation refactor breaks

This commit is contained in:
Yair Morgenstern 2023-10-01 15:29:04 +03:00
parent c4aeb4d32a
commit 43ff2ac1f5
4 changed files with 14 additions and 13 deletions

View File

@ -21,6 +21,7 @@ import com.unciv.models.ruleset.unit.BaseUnit
import com.unciv.models.ruleset.unit.Promotion import com.unciv.models.ruleset.unit.Promotion
import com.unciv.models.ruleset.unit.UnitType import com.unciv.models.ruleset.unit.UnitType
import com.unciv.models.ruleset.validation.RulesetValidator import com.unciv.models.ruleset.validation.RulesetValidator
import com.unciv.models.ruleset.validation.UniqueValidator
import com.unciv.models.stats.INamed import com.unciv.models.stats.INamed
import com.unciv.models.translations.tr import com.unciv.models.translations.tr
import com.unciv.utils.Log import com.unciv.utils.Log
@ -378,7 +379,7 @@ class Ruleset {
name = cityStateType.name name = cityStateType.name
color = cityStateType.color color = cityStateType.color
friendBonusUniques = ArrayList(cityStateType.friendBonusUniques.filter { friendBonusUniques = ArrayList(cityStateType.friendBonusUniques.filter {
RulesetValidator(this@Ruleset).checkUnique( UniqueValidator(this@Ruleset).checkUnique(
Unique(it), Unique(it),
false, false,
cityStateType, cityStateType,
@ -386,7 +387,7 @@ class Ruleset {
).isEmpty() ).isEmpty()
}) })
allyBonusUniques = ArrayList(cityStateType.allyBonusUniques.filter { allyBonusUniques = ArrayList(cityStateType.allyBonusUniques.filter {
RulesetValidator(this@Ruleset).checkUnique( UniqueValidator(this@Ruleset).checkUnique(
Unique(it), Unique(it),
false, false,
cityStateType, cityStateType,

View File

@ -8,7 +8,7 @@ import com.unciv.logic.city.City
import com.unciv.logic.civilization.Civilization import com.unciv.logic.civilization.Civilization
import com.unciv.logic.civilization.managers.ReligionState import com.unciv.logic.civilization.managers.ReligionState
import com.unciv.models.ruleset.Ruleset 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.stats.Stats
import com.unciv.models.translations.getConditionals import com.unciv.models.translations.getConditionals
import com.unciv.models.translations.getPlaceholderParameters 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 // filter out possible replacements that are obviously wrong
val uniquesWithNoErrors = finalPossibleUniques.filter { val uniquesWithNoErrors = finalPossibleUniques.filter {
val unique = Unique(it) val unique = Unique(it)
val errors = RulesetValidator(ruleset).checkUnique( val errors = UniqueValidator(ruleset).checkUnique(
unique, true, null, unique, true, null,
UniqueType.UniqueComplianceErrorSeverity.RulesetSpecific UniqueType.UniqueComplianceErrorSeverity.RulesetSpecific
) )

View File

@ -85,7 +85,7 @@ class UniqueValidator(val ruleset: Ruleset) {
) )
return return
} }
if (conditional.type.targetTypes.none { it.modifierType != UniqueTarget.ModifierType.None }) if (conditional.type.targetTypes.none { it.modifierType != UniqueTarget.ModifierType.None })
rulesetErrors.add( rulesetErrors.add(
"$prefix unique \"${unique.text}\" contains the conditional \"${conditional.text}\"," + "$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) 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( rulesetErrors.add(
"$prefix unique \"${unique.text}\" contains the conditional \"${conditional.text}\"," + "$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 RulesetErrorSeverity.Warning
) )

View File

@ -7,14 +7,15 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.utils.Align import com.badlogic.gdx.utils.Align
import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.Ruleset
import com.unciv.models.ruleset.RulesetCache 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.Unique
import com.unciv.models.ruleset.unique.UniqueType 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.models.translations.tr
import com.unciv.ui.components.ExpanderTab import com.unciv.ui.components.ExpanderTab
import com.unciv.ui.components.TabbedPager 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.surroundWithCircle
import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.extensions.toLabel
import com.unciv.ui.components.extensions.toTextButton 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.images.ImageGetter
import com.unciv.ui.popups.ToastPopup import com.unciv.ui.popups.ToastPopup
import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.basescreen.BaseScreen
import com.unciv.ui.components.TranslatedSelectBox
import com.unciv.utils.Concurrency import com.unciv.utils.Concurrency
import com.unciv.utils.Log import com.unciv.utils.Log
import com.unciv.utils.debug import com.unciv.utils.debug
@ -200,7 +200,7 @@ class ModCheckTab(
uniqueReplacementText += " <${conditional.text}>" uniqueReplacementText += " <${conditional.text}>"
val replacementUnique = Unique(uniqueReplacementText) val replacementUnique = Unique(uniqueReplacementText)
val modInvariantErrors = RulesetValidator(mod).checkUnique( val modInvariantErrors = UniqueValidator(mod).checkUnique(
replacementUnique, replacementUnique,
false, false,
null, null,
@ -211,7 +211,7 @@ class ModCheckTab(
if (modInvariantErrors.isNotEmpty()) continue // errors means no autoreplace if (modInvariantErrors.isNotEmpty()) continue // errors means no autoreplace
if (mod.modOptions.isBaseRuleset) { if (mod.modOptions.isBaseRuleset) {
val modSpecificErrors = RulesetValidator(mod).checkUnique( val modSpecificErrors = UniqueValidator(mod).checkUnique(
replacementUnique, replacementUnique,
false, false,
null, null,