Advertisement
TerrificTable55

Untitled

Nov 13th, 2022
1,161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.87 KB | None | 0 0
  1.  
  2. class ConfigSaver : Config<ConfigSaver>(ConfigType.SAVE) {
  3.  
  4.     val seperator = "/"
  5.     val basepath: String = ".${seperator}NoWay" // %appdata%/.minecraft/NoWay/
  6.  
  7.  
  8.     private fun getSettingType(setting: Setting): SettingType? {
  9.         if (setting.isCheck) return SettingType.CHECK
  10.         if (setting.isColor) return SettingType.COLOR
  11.         if (setting.isCombo) return SettingType.COMBO
  12.         if (setting.isSlider) return SettingType.SLIDER
  13.         return null
  14.     }
  15.  
  16.     private fun settingToJson(setting: Setting): JsonObject {
  17.         val jsonObj = JsonObject()
  18.         val settingType = getSettingType(setting)
  19.  
  20.         jsonObj.addProperty("name", setting.name)
  21.         jsonObj.addProperty("type", settingType?.name)
  22.  
  23.         if (settingType?.equals(SettingType.CHECK) == true) {
  24.             jsonObj.addProperty("value", setting.valBoolean)
  25.         }
  26.         if (settingType?.equals(SettingType.COLOR) == true) {
  27.             val colorValues = JsonObject()
  28.             colorValues.addProperty("red", setting.color.red)
  29.             colorValues.addProperty("green", setting.color.green)
  30.             colorValues.addProperty("blue", setting.color.blue)
  31.             colorValues.addProperty("alpha", setting.color.alpha)
  32.  
  33.             jsonObj.add("value", colorValues)
  34.         }
  35.         if (settingType?.equals(SettingType.COMBO) == true) {
  36.             jsonObj.addProperty("value", setting.valString)
  37.         }
  38.         if (settingType?.equals(SettingType.SLIDER) == true) {
  39.             jsonObj.addProperty("value", setting.valDouble)
  40.         }
  41.  
  42.         return jsonObj
  43.     }
  44.  
  45.  
  46.     fun save(baseModulePath: String, module: Module) {
  47.         val finalSettingJson = JsonObject()
  48.         val moduleJson = JsonObject()
  49.         val moduleSettings = NoWay.settingsManager.getSettingsByMod(module)
  50.  
  51.  
  52.         if (moduleSettings != null) {
  53.             for (setting: Setting in moduleSettings) {
  54.  
  55.                 val settingJson: String = JsonUtils.formatJsonObjectToString(settingToJson(setting))
  56.  
  57.                 finalSettingJson.add(setting.name, JsonUtils.convertStringToJsonObject(settingJson))
  58.             }
  59.         }
  60.  
  61.  
  62.         moduleJson.addProperty("name", module.name)
  63.         moduleJson.addProperty("key", module.key)
  64.         moduleJson.addProperty("toggled", module.isToggled)
  65.         moduleJson.add("settings", finalSettingJson)
  66.  
  67.         FileIOUtils.writeFile("$baseModulePath${module.name}.json", JsonUtils.formatJsonObjectToString(moduleJson))
  68.     }
  69.  
  70.  
  71.     override fun call(modules: ArrayList<Module>) {
  72.         println("Saving Modules Configs")
  73.  
  74.         val baseModulePath = "$basepath${seperator}modules$seperator"
  75.         if (!Files.exists(Paths.get(baseModulePath))) {
  76.             Files.createDirectory(Paths.get(baseModulePath))
  77.         }
  78.  
  79.         for (module: Module in modules) {
  80.             save(baseModulePath, module)
  81.         }
  82.  
  83.  
  84.     }
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement