using System; using System.IO; using System.Linq; using Newtonsoft.Json; using System.Collections.Generic; namespace AssetStudio { public static class UnityCNManager { public const string KeysFileName = "Keys.json"; private static List Entries = new List(); static UnityCNManager() { var str = File.ReadAllText(KeysFileName); Entries = JsonConvert.DeserializeObject>(str); } public static void SaveEntries(List entries) { Entries.Clear(); Entries.AddRange(entries); var str = JsonConvert.SerializeObject(Entries); File.WriteAllText(KeysFileName, str); } public static void SetKey(int index) { if (TryGetEntry(index, out var unityCN)) { if (UnityCN.SetKey(unityCN)) { Logger.Info($"[UnityCN] Selected Key is {unityCN}"); } else { Logger.Info($"[UnityCN] No Key is selected !!"); } } else { Logger.Error("Invalid Key !!"); Logger.Warning(GetEntries().Select(x => x.ToString()).ToString()); } } public static bool TryGetEntry(int index, out UnityCN.Entry key) { try { if (index < 0 || index > Entries.Count) { throw new ArgumentOutOfRangeException(); } key = Entries[index]; } catch(Exception e) { Logger.Error($"[UnityCN] Invalid Index, check if list is not empty !!\n{e.Message}"); key = null; return false; } return true; } public static UnityCN.Entry[] GetEntries() => Entries.ToArray(); public new static string ToString() => string.Join("\n", GetEntries().Select((x, i) => $"{i}: {x.Name}")); } }