mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-14 09:48:12 +07:00
Resolved #9294 - solved "get vanilla ruleset" errors after downloading mods
This commit is contained in:
@ -476,24 +476,24 @@ object RulesetCache : HashMap<String,Ruleset>() {
|
|||||||
|
|
||||||
/** Returns error lines from loading the rulesets, so we can display the errors to users */
|
/** Returns error lines from loading the rulesets, so we can display the errors to users */
|
||||||
fun loadRulesets(consoleMode: Boolean = false, noMods: Boolean = false) :List<String> {
|
fun loadRulesets(consoleMode: Boolean = false, noMods: Boolean = false) :List<String> {
|
||||||
clear()
|
val newRulesets = HashMap<String, Ruleset>()
|
||||||
|
|
||||||
for (ruleset in BaseRuleset.values()) {
|
for (ruleset in BaseRuleset.values()) {
|
||||||
val fileName = "jsons/${ruleset.fullName}"
|
val fileName = "jsons/${ruleset.fullName}"
|
||||||
val fileHandle =
|
val fileHandle =
|
||||||
if (consoleMode) FileHandle(fileName)
|
if (consoleMode) FileHandle(fileName)
|
||||||
else Gdx.files.internal(fileName)
|
else Gdx.files.internal(fileName)
|
||||||
this[ruleset.fullName] = Ruleset().apply {
|
newRulesets[ruleset.fullName] = Ruleset().apply {
|
||||||
load(fileHandle)
|
load(fileHandle)
|
||||||
name = ruleset.fullName
|
name = ruleset.fullName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noMods) return listOf()
|
val errorLines = ArrayList<String>()
|
||||||
|
if (!noMods){
|
||||||
val modsHandles = if (consoleMode) FileHandle("mods").list()
|
val modsHandles = if (consoleMode) FileHandle("mods").list()
|
||||||
else Gdx.files.local("mods").list()
|
else Gdx.files.local("mods").list()
|
||||||
|
|
||||||
val errorLines = ArrayList<String>()
|
|
||||||
for (modFolder in modsHandles) {
|
for (modFolder in modsHandles) {
|
||||||
if (modFolder.name().startsWith('.')) continue
|
if (modFolder.name().startsWith('.')) continue
|
||||||
if (!modFolder.isDirectory) continue
|
if (!modFolder.isDirectory) continue
|
||||||
@ -502,7 +502,7 @@ object RulesetCache : HashMap<String,Ruleset>() {
|
|||||||
modRuleset.load(modFolder.child("jsons"))
|
modRuleset.load(modFolder.child("jsons"))
|
||||||
modRuleset.name = modFolder.name()
|
modRuleset.name = modFolder.name()
|
||||||
modRuleset.folderLocation = modFolder
|
modRuleset.folderLocation = modFolder
|
||||||
this[modRuleset.name] = modRuleset
|
newRulesets[modRuleset.name] = modRuleset
|
||||||
debug("Mod loaded successfully: %s", modRuleset.name)
|
debug("Mod loaded successfully: %s", modRuleset.name)
|
||||||
if (Log.shouldLog()) {
|
if (Log.shouldLog()) {
|
||||||
val modLinksErrors = modRuleset.checkModLinks()
|
val modLinksErrors = modRuleset.checkModLinks()
|
||||||
@ -522,6 +522,13 @@ object RulesetCache : HashMap<String,Ruleset>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Log.shouldLog()) for (line in errorLines) debug(line)
|
if (Log.shouldLog()) for (line in errorLines) debug(line)
|
||||||
|
}
|
||||||
|
|
||||||
|
// We save the 'old' cache values until we're ready to replace everything, so that the cache isn't empty while we try to load ruleset files
|
||||||
|
// - this previously lead to "can't find Vanilla ruleset" if the user had a lot of mods and downloaded a new one
|
||||||
|
this.clear()
|
||||||
|
this.putAll(newRulesets)
|
||||||
|
|
||||||
return errorLines
|
return errorLines
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user