mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-15 03:31:15 +03:00
Names, descriptions, submodifications and switch mechanics for additional mods (#52)
* Names for optional mods * Names for optional modifications * Description and submodifications * Description and submodifications * Switching tree of mods. * Switching tree of mods. * Switching tree of mods. (Damn spaces..) * Switching tree of mods. (Lost variable)
This commit is contained in:
parent
e37dae3a0d
commit
a80b0d9ccb
2 changed files with 92 additions and 4 deletions
|
@ -41,4 +41,16 @@ var serversConfig = {
|
||||||
}
|
}
|
||||||
return serversConfig[profile][property];
|
return serversConfig[profile][property];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var optModNames = {
|
||||||
|
optAutoModName: true,//Попытатся автоматически создать представляемое имя модификации
|
||||||
|
modInfo: {//"Путь до опц. модификации" : "Отображаемый клиенту контент"
|
||||||
|
/*"mods/ModName-1.1.jar": {
|
||||||
|
name: "ModName", //Наименование модификации (Отображаемое в лаунчере)
|
||||||
|
description:"Лучший в своём роде ModName.", //Описание модификации
|
||||||
|
group: 1, //Группа (Используется для ветки зависемых модификаций. К примеру: у NEI [submod: false и group: 1], а у NeiAddons и NeiPlugins [submod: true group: 1])
|
||||||
|
submod: false //Это суб-модификация? (будет произведён отступ от левого края для выделения)
|
||||||
|
},*/
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -84,6 +84,7 @@ var options = {
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
var upd = false; //Переменная обноеления интерфейса.
|
||||||
function updateOptional()
|
function updateOptional()
|
||||||
{
|
{
|
||||||
var holder = options.overlay.lookup("#modlist").getContent();
|
var holder = options.overlay.lookup("#modlist").getContent();
|
||||||
|
@ -100,7 +101,26 @@ function updateOptional()
|
||||||
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) {
|
list.forEach(function(modfile,i,arr) {
|
||||||
var testMod = new javafx.scene.control.CheckBox(modfile.string);
|
var modName = modfile.string, modDescription = "", subm = false;
|
||||||
|
if(optModNames.modInfo[modfile.string] != null){//Есть ли хоть какое ни будь представление описания модификации?
|
||||||
|
var optModN = optModNames.modInfo[modfile.string];
|
||||||
|
if(optModN.name != null)//Есть ли у модификации имя?
|
||||||
|
modName = optModN.name;
|
||||||
|
if(optModN.description != null) //Есть ли описание?
|
||||||
|
modDescription = optModN.description;
|
||||||
|
if(optModN.submod != null && optModN.submod == true)//Это суб-модификация?
|
||||||
|
subm = true;
|
||||||
|
} else if(optModNames.optAutoModName) {
|
||||||
|
//Попытка автоматически создать представляемое имя модификации.
|
||||||
|
modName = modName.replace(new RegExp("(.*?(\/))",'g'),'');
|
||||||
|
modName = modName.replace(new RegExp("(-|_|[\\d]|\\+).*",'g'),'');
|
||||||
|
//Первая буква - заглавная
|
||||||
|
modName = modName[0].toUpperCase() + modName.slice(1);
|
||||||
|
}
|
||||||
|
var testMod = new javafx.scene.control.CheckBox(modName);
|
||||||
|
|
||||||
|
if(subm)//Это суб-модификация?
|
||||||
|
testMod.setTranslateX(25);
|
||||||
|
|
||||||
testMod.setSelected(modfile.mark);
|
testMod.setSelected(modfile.mark);
|
||||||
testMod.setOnAction(function(event) {
|
testMod.setOnAction(function(event) {
|
||||||
|
@ -109,14 +129,70 @@ function updateOptional()
|
||||||
{
|
{
|
||||||
profile.markOptional(modfile.string);
|
profile.markOptional(modfile.string);
|
||||||
LogHelper.debug("Selected mod %s", modfile.string);
|
LogHelper.debug("Selected mod %s", modfile.string);
|
||||||
|
optionalModTreeToggle(true, modfile.string);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
profile.unmarkOptional(modfile.string);
|
profile.unmarkOptional(modfile.string);
|
||||||
LogHelper.debug("Unselected mod %s", modfile.string);
|
LogHelper.debug("Unselected mod %s", modfile.string);
|
||||||
|
optionalModTreeToggle(false, modfile.string);
|
||||||
}
|
}
|
||||||
|
upd = true;
|
||||||
|
updateOptional();
|
||||||
});
|
});
|
||||||
checkboxlist.add(testMod);
|
checkboxlist.add(testMod);
|
||||||
|
|
||||||
|
if(modDescription != "") { //Добавляем оаисание
|
||||||
|
textDescr = new javafx.scene.text.Text(modDescription);
|
||||||
|
if(subm){//Это суб-модификация?
|
||||||
|
textDescr.setWrappingWidth(345);
|
||||||
|
textDescr.setTranslateX(50);
|
||||||
|
} else {
|
||||||
|
textDescr.setWrappingWidth(370);
|
||||||
|
textDescr.setTranslateX(25);
|
||||||
|
}
|
||||||
|
textDescr.setTextAlignment(javafx.scene.text.TextAlignment.JUSTIFY);
|
||||||
|
textDescr.getStyleClass().add("description-text");
|
||||||
|
checkboxlist.add(textDescr);
|
||||||
|
}
|
||||||
|
sep = new javafx.scene.control.Separator();
|
||||||
|
sep.getStyleClass().add("separator");
|
||||||
|
checkboxlist.add(sep);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
if(upd) holder.getChildren().clear();
|
||||||
holder.getChildren().addAll(checkboxlist);
|
holder.getChildren().addAll(checkboxlist);
|
||||||
}
|
};
|
||||||
|
function optionalModTreeToggle(enable, Imodfile) { //Переключение ветки модов
|
||||||
|
var profile = profilesList[serverHolder.old].object;
|
||||||
|
if(optModNames.modInfo[Imodfile] != null) {
|
||||||
|
var modInfo = optModNames.modInfo[Imodfile];
|
||||||
|
var modList = optModNames.modInfo;
|
||||||
|
|
||||||
|
if(modInfo.group != null && modInfo.submod != null) {
|
||||||
|
|
||||||
|
if(modInfo.submod == false){//Отключение core-модификации
|
||||||
|
Object.keys(modList).forEach(function(key, id) {
|
||||||
|
if(modList[key] != null && modList[key].group != null && modList[key].submod != null) {
|
||||||
|
if(modList[key].group == modInfo.group && modList[key].submod == true && enable == false) {
|
||||||
|
profile.unmarkOptional(key);
|
||||||
|
LogHelper.debug("Unselected subMod %s", key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if(modInfo.submod == true){//Включение суб-модификации (Без core суб-моды работать не будут, так что его нужно включать)
|
||||||
|
Object.keys(modList).forEach(function(key, id) {
|
||||||
|
if(modList[key] != null && modList[key].group != null && modList[key].submod != null) {
|
||||||
|
if(modList[key].group == modInfo.group && modList[key].submod == false && enable == true) {
|
||||||
|
profile.markOptional(key);
|
||||||
|
LogHelper.debug("Selected coreMod %s", key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue