Resolved #6447 - Solved out of memory errors for modded base rulesets

This commit is contained in:
Yair Morgenstern 2022-03-28 17:23:19 +03:00
parent 52f797c8e3
commit 0352df10e8

View File

@ -572,7 +572,7 @@ class Ruleset {
val vanillaRuleset = RulesetCache.getVanillaRuleset() // for UnitTypes fallback
if (units.values.none { it.uniques.contains(UniqueType.FoundCity.text) })
if (units.values.none { it.hasUnique(UniqueType.FoundCity) })
lines += "No city-founding units in ruleset!"
for (unit in units.values) {
@ -879,7 +879,7 @@ object RulesetCache : HashMap<String,Ruleset>() {
else getVanillaRuleset()
val loadedMods = mods
val loadedMods = mods.asSequence()
.filter { containsKey(it) }
.map { this[it]!! }
.filter { !it.modOptions.isBaseRuleset } +
@ -887,7 +887,9 @@ object RulesetCache : HashMap<String,Ruleset>() {
for (mod in loadedMods.sortedByDescending { it.modOptions.isBaseRuleset }) {
if (mod.modOptions.isBaseRuleset) {
newRuleset.modOptions = mod.modOptions
// This is so we don't keep using the base ruleset's unqiues *by reference* and add to in ad infinitum
newRuleset.modOptions.uniques = ArrayList()
newRuleset.modOptions.isBaseRuleset = true
}
newRuleset.add(mod)
newRuleset.mods += mod.name