From 5a13d561221cd40c91ea612ac654975c13d6ebbb Mon Sep 17 00:00:00 2001 From: Yaroslavik Date: Sat, 24 Nov 2018 12:18:06 +0300 Subject: [PATCH] Optional mods fix. (#81) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Если модификация была в профайле, но не была в конфиге - дерево модификаций пыталось переключить несуществующую. Что приводило к неправильной работе веток. --- .../runtime/dialog/overlay/options/options.js | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/Launcher/runtime/dialog/overlay/options/options.js b/Launcher/runtime/dialog/overlay/options/options.js index 02ece64f..22949c05 100644 --- a/Launcher/runtime/dialog/overlay/options/options.js +++ b/Launcher/runtime/dialog/overlay/options/options.js @@ -79,7 +79,7 @@ var options = { initOverlay: function() { options.overlay = loadFXML("dialog/overlay/options/options.fxml"); - var holder = options.overlay.lookup("#holder"); + var holder = options.overlay.lookup("#holder"); holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null)); }, update: function() { @@ -188,8 +188,10 @@ var options = { modIDs.forEach(function(key, id) { if(modList[key] != null && modList[key].subTreeLevel != null) { if( modList[key].subTreeLevel > modInfo.subTreeLevel && modIDs.indexOf(key) > modIDs.indexOf(ImodFile) && enable == false && stop == false) { - profile.unmarkOptional(key); - LogHelper.debug("Unselected subMod %s", key); + if(options.modExists(key)){ + profile.unmarkOptional(key); + LogHelper.debug("Unselected subMod %s", key); + } } else if(modIDs.indexOf(key) > modIDs.indexOf(ImodFile) && modList[key].subTreeLevel <= modInfo.subTreeLevel && stop == false) { //LogHelper.debug("STOP disable!! " + key); stop = true; @@ -202,8 +204,10 @@ var options = { modIDs.forEach(function(key, id) { if(modList[key] != null && modList[key].onlyOneGroup != null) { if(modList[key].onlyOneGroup == modInfo.onlyOneGroup && modList[key].onlyOne == true && enable == true && key != ImodFile) { - profile.unmarkOptional(key); - LogHelper.debug("Unselected Mod (onlyOne toggle) %s", key); + if(options.modExists(key)) { + profile.unmarkOptional(key); + LogHelper.debug("Unselected Mod (onlyOne toggle) %s", key); + } options.treeToggle(false, key); //И все его подмодификации канут в Лету.. } } @@ -216,8 +220,10 @@ var options = { reverseModList.forEach(function(key, id) { if(modList[key] != null && modList[key].subTreeLevel != null) { if(modList[key].subTreeLevel == tsl && modIDs.indexOf(key) < modIDs.indexOf(ImodFile) && enable == true) { - profile.markOptional(key); - LogHelper.debug("Selected coreMod %s", key); + if(options.modExists(key)) { + profile.markOptional(key); + LogHelper.debug("Selected coreMod %s", key); + } options.treeToggle(true, key); //Для срабатывания onlyOne-модификаций. tsl--; } @@ -227,6 +233,17 @@ var options = { } } + }, + modExists: function(key){ + var profile = profilesList[serverHolder.old].object; + var list = profile.getOptional(); + var result = false; + list.forEach(function(modFile) { + if(modFile.string === key) { + result = true; + } + }); + return result; } };