TerrificTable55

Untitled

Nov 13th, 2022
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.82 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.BooleanSetting;
  7. import com.arsenicclient.settings.impl.ColorSetting;
  8. import com.arsenicclient.settings.impl.ModeSetting;
  9. import com.arsenicclient.settings.impl.NumberSetting;
  10. import com.arsenicclient.utils.io.FileIOUtils;
  11. import com.arsenicclient.utils.io.JsonUtils;
  12. import com.google.gson.JsonArray;
  13. import com.google.gson.JsonElement;
  14. import com.google.gson.JsonObject;
  15.  
  16. import java.awt.*;
  17. import java.io.File;
  18. import java.util.List;
  19. import java.util.Objects;
  20.  
  21. public class ConfigLoader {
  22.  
  23.     private final File rootFolder = new File(Arsenic.name);
  24.     private final File moduleFolder = new File(rootFolder, "modules");
  25.  
  26.     private final File clickGui = new File(rootFolder, "clickgui.json");
  27.  
  28.  
  29.     public void load() {
  30.         for (File file : Objects.requireNonNull(moduleFolder.listFiles())) {
  31.             load(file);
  32.         }
  33.     }
  34.  
  35.     private void load(File file) {
  36.         String contents = FileIOUtils.readFile(file.getAbsolutePath());
  37.  
  38.         JsonObject json = JsonUtils.stringToJsonObject(contents);
  39.         Module module = Arsenic.getModuleManager().getModule(json.get("name").getAsString());
  40.         boolean enabled = json.get("enabled").getAsBoolean();
  41.         module.setToggled(enabled);
  42.  
  43.         JsonArray settings = json.get("settings").getAsJsonArray();
  44.         for (JsonElement _elm : settings) {
  45.             JsonObject elm = _elm.getAsJsonObject();
  46.  
  47.             String type = elm.get("type").getAsString();
  48.             String value = elm.get("value").getAsString();
  49.  
  50.             switch (type) {
  51.                 case "key":
  52.                     module.setKey(Integer.parseInt(value));
  53.                     break;
  54.                 case "mode": {
  55.                     Setting setting = getSetting(module.getSettings(), elm.get("name").getAsString());
  56.                     assert setting != null;
  57.                     ((ModeSetting) setting).setMode(value);
  58.                     break;
  59.                 }
  60.                 case "slider": {
  61.                     Setting setting = getSetting(module.getSettings(), elm.get("name").getAsString());
  62.                     assert setting != null;
  63.                     ((NumberSetting) setting).setValue(Float.parseFloat(value));
  64.                     break;
  65.                 }
  66.                 case "bool": {
  67.                     Setting setting = getSetting(module.getSettings(), elm.get("name").getAsString());
  68.                     assert setting != null;
  69.                     ((BooleanSetting) setting).setToggled(Boolean.parseBoolean(value));
  70.                     break;
  71.                 }
  72.                 case "color": {
  73.                     Setting setting = getSetting(module.getSettings(), elm.get("name").getAsString());
  74.                     JsonObject col_values = elm.get("value").getAsJsonObject();
  75.                     int r = col_values.get("red").getAsInt();
  76.                     int g = col_values.get("green").getAsInt();
  77.                     int b = col_values.get("blue").getAsInt();
  78.                     int a = col_values.get("alpha").getAsInt();
  79.  
  80.                     Color color = new Color(r, g, b, a);
  81.                     assert setting != null;
  82.                     ((ColorSetting) setting).setColor(color);
  83.                     break;
  84.                 }
  85.                 default:
  86.                     System.err.println("Unknown setting type: " + module.getName() + ".json/" + type);
  87.                     break;
  88.             }
  89.         }
  90.     }
  91.  
  92.     private Setting getSetting(List<Setting> settings, String name) {
  93.         for (Setting setting : settings) {
  94.             if (setting.name.equals(name))
  95.                 return setting;
  96.         }
  97.         return null;
  98.     }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment