ООП-like стиль опциональных модов

This commit is contained in:
Gravit 2018-11-13 17:49:56 +07:00
parent 78ecb7ff43
commit 370466dbe7
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
2 changed files with 135 additions and 137 deletions

View file

@ -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);
} }

View file

@ -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)
} }
} }
} }
};