From 6db80a4b1527e60d6e1804bf5fa00e58986581ed Mon Sep 17 00:00:00 2001
From: Yaroslavik <yaroslav4167@mail.ru>
Date: Sun, 11 Nov 2018 16:16:42 +0200
Subject: [PATCH] Description and submodifications

---
 .../runtime/dialog/overlay/options/options.js | 51 ++++++++++++++-----
 1 file changed, 39 insertions(+), 12 deletions(-)

diff --git a/Launcher/runtime/dialog/overlay/options/options.js b/Launcher/runtime/dialog/overlay/options/options.js
index 6b7ca736..2afd46c1 100644
--- a/Launcher/runtime/dialog/overlay/options/options.js
+++ b/Launcher/runtime/dialog/overlay/options/options.js
@@ -59,17 +59,26 @@ function updateOptional()
     var list = profile.getOptional();
     var checkboxlist = new java.util.ArrayList;
     list.forEach(function(modfile,i,arr) {
-	var modName = modfile.string;
-	if(optModNames.modName[modfile.string] != null){
-	    modName = optModNames.modName[modfile.string];
-	} 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 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.setOnAction(function(event) {
@@ -85,7 +94,25 @@ function updateOptional()
                  LogHelper.debug("Unselected mod %s", modfile.string);
              }
          });
-         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);
+         
     });
     holder.getChildren().addAll(checkboxlist);
-}
+};