using I2.Loc.SimpleJSON; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using UnityEngine; namespace CustomCosmeticLoader { public class Config { public const string CONFIG_FILE_NAME = "config.json"; public const string SKINS_DIR_NAME = "skins"; public static bool enabled = true; public static string currentSkin; public static string skinToHijack = "Swirl_M"; // Mirage, simple skin with nice properties public static Dictionary skins = new Dictionary(); public static void Init() { if (File.Exists(GetConfigPath())) ReadConfig(); else SaveConfig(); } public static string GetConfigPath() { return Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), CONFIG_FILE_NAME); } private static void ReadConfig() { if (!File.Exists(GetConfigPath())) return; JSONNode data; try { data = JSON.Parse(File.ReadAllText(GetConfigPath())); } catch (Exception e) { Debug.LogError("Couldn't load CustomCosmeticLoader config!"); Debug.LogException(e); return; } if (data["enabled"] != null) enabled = data["enabled"].AsBool; if (data["currentSkin"] != null) currentSkin = data["currentSkin"].Value; if (currentSkin == null || !skins.ContainsKey(currentSkin)) { if (skins.Count == 0) { Debug.LogWarning("No custom skins found, disabling"); enabled = false; return; } currentSkin = skins.Keys.ToList()[0]; } if (data["skinToHijack"] != null) skinToHijack = data["skinToHijack"].Value; } public static void SaveConfig() { JSONNode node = new JSONClass { { "enabled", enabled ? "true" : "false" }, { "currentSkin", currentSkin }, { "skinToHijack", skinToHijack } }; File.WriteAllText(GetConfigPath(), node.ToString()); } } }