mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-12-23 09:01:08 +03:00
Sorting optional mods, triggering core-mods. (#60)
Сортировка производится по механике: Сначала все моды по порядку как в config.js, а потом всё остальное. Триггер core-модификации работает так: Если 2 модификации имеют параметр submod: false и одинаковую группу - то они будут переключатся, при включении одного из них. То есть не возможно будет включить две модификации сразу. Полезно для тех же различных типов мини-карт.
This commit is contained in:
parent
909d55076c
commit
78ecb7ff43
1 changed files with 80 additions and 62 deletions
|
@ -84,7 +84,6 @@ var options = {
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
var upd = false; //Переменная обноеления интерфейса.
|
|
||||||
function updateOptional()
|
function updateOptional()
|
||||||
{
|
{
|
||||||
var holder = options.overlay.lookup("#modlist").getContent();
|
var holder = options.overlay.lookup("#modlist").getContent();
|
||||||
|
@ -100,9 +99,16 @@ function updateOptional()
|
||||||
var profile = profilesList[serverHolder.old].object;
|
var profile = profilesList[serverHolder.old].object;
|
||||||
var list = profile.getOptional();
|
var list = profile.getOptional();
|
||||||
var checkboxlist = new java.util.ArrayList;
|
var checkboxlist = new java.util.ArrayList;
|
||||||
list.forEach(function(modfile,i,arr) {
|
var modConfigKeys = Object.keys(optModNames.modInfo);
|
||||||
|
var dModsIds = [];
|
||||||
|
|
||||||
|
for (var ik = 0, l = modConfigKeys.length + 1; ik <= l; ik++) {
|
||||||
|
list.forEach(function(modfile) {
|
||||||
|
if((modConfigKeys[ik] === modfile.string) || (ik == modConfigKeys.length+1 && dModsIds.indexOf(modfile.string) == -1)) {
|
||||||
|
dModsIds.push(modfile.string);
|
||||||
|
|
||||||
var modName = modfile.string, modDescription = "", subm = false;
|
var modName = modfile.string, modDescription = "", subm = false;
|
||||||
if(optModNames.modInfo[modfile.string] != null){//Есть ли хоть какое ни будь представление описания модификации?
|
if(optModNames.modInfo[modfile.string] != null){//Есть ли хоть какое-нибудь представление описания модификации?
|
||||||
var optModN = optModNames.modInfo[modfile.string];
|
var optModN = optModNames.modInfo[modfile.string];
|
||||||
if(optModN.name != null)//Есть ли у модификации имя?
|
if(optModN.name != null)//Есть ли у модификации имя?
|
||||||
modName = optModN.name;
|
modName = optModN.name;
|
||||||
|
@ -137,12 +143,11 @@ function updateOptional()
|
||||||
LogHelper.debug("Unselected mod %s", modfile.string);
|
LogHelper.debug("Unselected mod %s", modfile.string);
|
||||||
optionalModTreeToggle(false, modfile.string);
|
optionalModTreeToggle(false, modfile.string);
|
||||||
}
|
}
|
||||||
upd = true;
|
|
||||||
updateOptional();
|
updateOptional();
|
||||||
});
|
});
|
||||||
checkboxlist.add(testMod);
|
checkboxlist.add(testMod);
|
||||||
|
|
||||||
if(modDescription != "") { //Добавляем оаисание
|
if(modDescription != "") { //Добавляем описание?
|
||||||
textDescr = new javafx.scene.text.Text(modDescription);
|
textDescr = new javafx.scene.text.Text(modDescription);
|
||||||
if(subm){//Это суб-модификация?
|
if(subm){//Это суб-модификация?
|
||||||
textDescr.setWrappingWidth(345);
|
textDescr.setWrappingWidth(345);
|
||||||
|
@ -158,12 +163,14 @@ function updateOptional()
|
||||||
sep = new javafx.scene.control.Separator();
|
sep = new javafx.scene.control.Separator();
|
||||||
sep.getStyleClass().add("separator");
|
sep.getStyleClass().add("separator");
|
||||||
checkboxlist.add(sep);
|
checkboxlist.add(sep);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
if(upd) holder.getChildren().clear();
|
}
|
||||||
|
holder.getChildren().clear();
|
||||||
holder.getChildren().addAll(checkboxlist);
|
holder.getChildren().addAll(checkboxlist);
|
||||||
};
|
};
|
||||||
function optionalModTreeToggle(enable, Imodfile) { //Переключение ветки модов
|
function optionalModTreeToggle(enable, Imodfile)
|
||||||
|
{ //Переключение ветки модов
|
||||||
var profile = profilesList[serverHolder.old].object;
|
var profile = profilesList[serverHolder.old].object;
|
||||||
if(optModNames.modInfo[Imodfile] != null) {
|
if(optModNames.modInfo[Imodfile] != null) {
|
||||||
var modInfo = optModNames.modInfo[Imodfile];
|
var modInfo = optModNames.modInfo[Imodfile];
|
||||||
|
@ -182,6 +189,17 @@ function optionalModTreeToggle(enable, Imodfile) { //Переключение в
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(modInfo.submod == false){//Включение core-модификации (Все core-модификации с той же группой будут отключены. К примеру 2 миникарты)
|
||||||
|
Object.keys(modList).forEach(function(key, id) {
|
||||||
|
if(modList[key] != null && modList[key].group != null) {
|
||||||
|
if(modList[key].group == modInfo.group && modList[key].submod == false && enable == true && key != Imodfile) {
|
||||||
|
profile.unmarkOptional(key);
|
||||||
|
LogHelper.debug("Unselected coreMod %s", key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if(modInfo.submod == true){//Включение суб-модификации (Без core суб-моды работать не будут, так что его нужно включать)
|
if(modInfo.submod == true){//Включение суб-модификации (Без core суб-моды работать не будут, так что его нужно включать)
|
||||||
Object.keys(modList).forEach(function(key, id) {
|
Object.keys(modList).forEach(function(key, id) {
|
||||||
if(modList[key] != null && modList[key].group != null && modList[key].submod != null) {
|
if(modList[key] != null && modList[key].group != null && modList[key].submod != null) {
|
||||||
|
|
Loading…
Reference in a new issue