mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-15 11:39:11 +03:00
ООП-like стиль опциональных модов
This commit is contained in:
parent
78ecb7ff43
commit
370466dbe7
2 changed files with 135 additions and 137 deletions
|
@ -182,7 +182,7 @@ function goOptions(event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show options overlay
|
// Show options overlay
|
||||||
updateOptional();
|
options.update();
|
||||||
overlay.show(options.overlay, null);
|
overlay.show(options.overlay, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,16 +43,16 @@ var options = {
|
||||||
for(var j = 0; j < listSize; j++)
|
for(var j = 0; j < listSize; j++)
|
||||||
{
|
{
|
||||||
var mark = input.readBoolean();
|
var mark = input.readBoolean();
|
||||||
var modfile = input.readString(0);
|
var modFile = input.readString(0);
|
||||||
if(mark)
|
if(mark)
|
||||||
{
|
{
|
||||||
profile.markOptional(modfile);
|
profile.markOptional(modFile);
|
||||||
LogHelper.debug("Load options %s marked",modfile);
|
LogHelper.debug("Load options %s marked",modFile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
profile.unmarkOptional(modfile);
|
profile.unmarkOptional(modFile);
|
||||||
LogHelper.debug("Load options %s unmarked",modfile);
|
LogHelper.debug("Load options %s unmarked",modFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,9 +67,9 @@ var options = {
|
||||||
var list = profile.getOptional();
|
var list = profile.getOptional();
|
||||||
output.writeInt(list.size());
|
output.writeInt(list.size());
|
||||||
output.writeInt(profile.getSortIndex());
|
output.writeInt(profile.getSortIndex());
|
||||||
list.forEach(function(modfile,j,arr2) {
|
list.forEach(function(modFile,j,arr2) {
|
||||||
output.writeBoolean(modfile.mark);
|
output.writeBoolean(modFile.mark);
|
||||||
output.writeString(modfile.string, 0);
|
output.writeString(modFile.string, 0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -82,10 +82,7 @@ var options = {
|
||||||
var holder = options.overlay.lookup("#holder");
|
var holder = options.overlay.lookup("#holder");
|
||||||
holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null));
|
holder.lookup("#apply").setOnAction(function(event) overlay.hide(0, null));
|
||||||
},
|
},
|
||||||
|
update: function() {
|
||||||
};
|
|
||||||
function updateOptional()
|
|
||||||
{
|
|
||||||
var holder = options.overlay.lookup("#modlist").getContent();
|
var holder = options.overlay.lookup("#modlist").getContent();
|
||||||
var nodelist = new java.util.ArrayList;
|
var nodelist = new java.util.ArrayList;
|
||||||
|
|
||||||
|
@ -98,23 +95,23 @@ 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;
|
||||||
var modConfigKeys = Object.keys(optModNames.modInfo);
|
var modConfigKeys = Object.keys(optModNames.modInfo);
|
||||||
var dModsIds = [];
|
var dModsIds = [];
|
||||||
|
|
||||||
for (var ik = 0, l = modConfigKeys.length + 1; ik <= l; ik++) {
|
for (var ik = 0, l = modConfigKeys.length + 1; ik <= l; ik++) {
|
||||||
list.forEach(function(modfile) {
|
list.forEach(function(modFile) {
|
||||||
if((modConfigKeys[ik] === modfile.string) || (ik == modConfigKeys.length+1 && dModsIds.indexOf(modfile.string) == -1)) {
|
if((modConfigKeys[ik] === modFile.string) || (ik == modConfigKeys.length+1 && dModsIds.indexOf(modFile.string) == -1)) {
|
||||||
dModsIds.push(modfile.string);
|
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;
|
||||||
if(optModN.description != null) //Есть ли описание?
|
if(optModN.description != null) //Есть ли описание?
|
||||||
modDescription = optModN.description;
|
modDescription = optModN.description;
|
||||||
if(optModN.submod != null && optModN.submod == true)//Это суб-модификация?
|
if(optModN.subMod != null && optModN.subMod == true)//Это суб-модификация?
|
||||||
subm = true;
|
subm = true;
|
||||||
} else if(optModNames.optAutoModName) {
|
} else if(optModNames.optAutoModName) {
|
||||||
//Попытка автоматически создать представляемое имя модификации.
|
//Попытка автоматически создать представляемое имя модификации.
|
||||||
|
@ -128,24 +125,24 @@ function updateOptional()
|
||||||
if(subm)//Это суб-модификация?
|
if(subm)//Это суб-модификация?
|
||||||
testMod.setTranslateX(25);
|
testMod.setTranslateX(25);
|
||||||
|
|
||||||
testMod.setSelected(modfile.mark);
|
testMod.setSelected(modFile.mark);
|
||||||
testMod.setOnAction(function(event) {
|
testMod.setOnAction(function(event) {
|
||||||
var isSelected = event.getSource().isSelected();
|
var isSelected = event.getSource().isSelected();
|
||||||
if(isSelected)
|
if(isSelected)
|
||||||
{
|
{
|
||||||
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);
|
options.treeToggle(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);
|
options.treeToggle(false, modFile.string);
|
||||||
}
|
}
|
||||||
updateOptional();
|
options.update();
|
||||||
});
|
});
|
||||||
checkboxlist.add(testMod);
|
checkBoxList.add(testMod);
|
||||||
|
|
||||||
if(modDescription != "") { //Добавляем описание?
|
if(modDescription != "") { //Добавляем описание?
|
||||||
textDescr = new javafx.scene.text.Text(modDescription);
|
textDescr = new javafx.scene.text.Text(modDescription);
|
||||||
|
@ -158,30 +155,29 @@ function updateOptional()
|
||||||
}
|
}
|
||||||
textDescr.setTextAlignment(javafx.scene.text.TextAlignment.JUSTIFY);
|
textDescr.setTextAlignment(javafx.scene.text.TextAlignment.JUSTIFY);
|
||||||
textDescr.getStyleClass().add("description-text");
|
textDescr.getStyleClass().add("description-text");
|
||||||
checkboxlist.add(textDescr);
|
checkBoxList.add(textDescr);
|
||||||
}
|
}
|
||||||
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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
holder.getChildren().clear();
|
holder.getChildren().clear();
|
||||||
holder.getChildren().addAll(checkboxlist);
|
holder.getChildren().addAll(checkBoxList);
|
||||||
};
|
},
|
||||||
function optionalModTreeToggle(enable, Imodfile)
|
treeToggle: function(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];
|
||||||
var modList = optModNames.modInfo;
|
var modList = optModNames.modInfo;
|
||||||
|
|
||||||
if(modInfo.group != null && modInfo.submod != null) {
|
if(modInfo.group != null && modInfo.subMod != null) {
|
||||||
|
|
||||||
if(modInfo.submod == false){//Отключение core-модификации
|
if(modInfo.subMod == false){//Отключение 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) {
|
||||||
if(modList[key].group == modInfo.group && modList[key].submod == true && enable == false) {
|
if(modList[key].group == modInfo.group && modList[key].subMod == true && enable == false) {
|
||||||
profile.unmarkOptional(key);
|
profile.unmarkOptional(key);
|
||||||
LogHelper.debug("Unselected subMod %s", key);
|
LogHelper.debug("Unselected subMod %s", key);
|
||||||
}
|
}
|
||||||
|
@ -189,10 +185,10 @@ function optionalModTreeToggle(enable, Imodfile)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(modInfo.submod == false){//Включение core-модификации (Все core-модификации с той же группой будут отключены. К примеру 2 миникарты)
|
if(modInfo.subMod == false){//Включение core-модификации (Все core-модификации с той же группой будут отключены. К примеру 2 миникарты)
|
||||||
Object.keys(modList).forEach(function(key, id) {
|
Object.keys(modList).forEach(function(key, id) {
|
||||||
if(modList[key] != null && modList[key].group != null) {
|
if(modList[key] != null && modList[key].group != null) {
|
||||||
if(modList[key].group == modInfo.group && modList[key].submod == false && enable == true && key != Imodfile) {
|
if(modList[key].group == modInfo.group && modList[key].subMod == false && enable == true && key != ImodFile) {
|
||||||
profile.unmarkOptional(key);
|
profile.unmarkOptional(key);
|
||||||
LogHelper.debug("Unselected coreMod %s", key);
|
LogHelper.debug("Unselected coreMod %s", key);
|
||||||
}
|
}
|
||||||
|
@ -200,10 +196,10 @@ function optionalModTreeToggle(enable, Imodfile)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
if(modList[key].group == modInfo.group && modList[key].submod == false && enable == true) {
|
if(modList[key].group == modInfo.group && modList[key].subMod == false && enable == true) {
|
||||||
profile.markOptional(key);
|
profile.markOptional(key);
|
||||||
LogHelper.debug("Selected coreMod %s", key);
|
LogHelper.debug("Selected coreMod %s", key);
|
||||||
}
|
}
|
||||||
|
@ -213,4 +209,6 @@ function optionalModTreeToggle(enable, Imodfile)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
};
|
Loading…
Reference in a new issue