TerrificTable55

Untitled

Nov 13th, 2022
1,003
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.08 KB | None | 0 0
  1. package com.arsenicclient.config;
  2.  
  3. import com.arsenicclient.Arsenic;
  4. import com.arsenicclient.module.Module;
  5. import com.arsenicclient.settings.Setting;
  6. import com.arsenicclient.settings.impl.*;
  7. import com.arsenicclient.utils.io.FileIOUtils;
  8. import com.google.gson.JsonArray;
  9. import com.google.gson.JsonObject;
  10.  
  11. import java.io.File;
  12. import java.util.ArrayList;
  13.  
  14. public class ConfigSaver {
  15.     private final File rootFolder = new File(Arsenic.name);
  16.     private final File moduleFolder = new File(rootFolder, "modules");
  17.  
  18.     private final File clickGui = new File(rootFolder, "clickgui.json");
  19.  
  20.  
  21.     public void save(ArrayList<Module> modules) {
  22.         if (!rootFolder.exists()) rootFolder.mkdirs();
  23.         if (!moduleFolder.exists()) moduleFolder.mkdirs();
  24.  
  25.         for (Module module : modules) {
  26.             save(module);
  27.         }
  28.     }
  29.  
  30.     private void save(Module module) {
  31.         JsonObject json = new JsonObject();
  32.  
  33.         json.addProperty("name", module.getName());
  34.         json.addProperty("enabled", module.isEnabled());
  35.  
  36.         JsonArray settings = new JsonArray();
  37.         for (Setting setting : module.getSettings()) {
  38.             JsonObject setting_json = settingToJson(setting);
  39.             settings.add(setting_json);
  40.         }
  41.         json.add("settings", settings);
  42.  
  43.  
  44.         FileIOUtils.writeFile(new File(moduleFolder, module.getName() + ".json").getAbsolutePath(), json);
  45.     }
  46.  
  47.  
  48.     private JsonObject settingToJson(Setting setting) {
  49.         JsonObject json = new JsonObject();
  50.  
  51.         if (setting instanceof NumberSetting) {
  52.             json.addProperty("name", setting.name);
  53.             json.addProperty("type", "slider");
  54.             json.addProperty("value", ((NumberSetting) setting).getValue());
  55.         } else if (setting instanceof ModeSetting) {
  56.             json.addProperty("name", setting.name);
  57.             json.addProperty("type", "mode");
  58.             json.addProperty("value", ((ModeSetting) setting).getMode());
  59.         } else if (setting instanceof ColorSetting) {
  60.             json.addProperty("name", setting.name);
  61.             json.addProperty("type", "color");
  62.             JsonObject color = new JsonObject();
  63.             color.addProperty("red", ((ColorSetting) setting).getColor().getRed());
  64.             color.addProperty("green", ((ColorSetting) setting).getColor().getGreen());
  65.             color.addProperty("blue", ((ColorSetting) setting).getColor().getBlue());
  66.             color.addProperty("alpha", ((ColorSetting) setting).getColor().getAlpha());
  67.             json.add("value", color);
  68.         } else if (setting instanceof KeySetting) {
  69.             json.addProperty("type", "key");
  70.             json.addProperty("value", ((KeySetting) setting).getCode());
  71.         } else if (setting instanceof BooleanSetting) {
  72.             json.addProperty("name", setting.name);
  73.             json.addProperty("type", "bool");
  74.             json.addProperty("value", ((BooleanSetting) setting).isToggled());
  75.         } else {
  76.             System.err.println("Unknown setting type: " + setting);
  77.         }
  78.  
  79.         return json;
  80.     }
  81.  
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment