public static WeaknessIndex LoadWeaknessIndex()
        {
            WeaknessIndex w = new WeaknessIndex();

            WeaknessSaveFile wsf = new WeaknessSaveFile();

            wsf = EncryptionManager.DeCrypt <WeaknessSaveFile>(wPath);

            w.Index = RetrieveWeaknessKVPs(wsf.Index, wsf);

            w.Reality = RetrieveWeaknessKVPs(wsf.Reality, wsf);

            return(w);
        }
        public static void SaveWeaknessIndex(WeaknessIndex w)
        {
            WeaknessSaveFile wsf = new WeaknessSaveFile();

            if (w.Index.Count > 0)
            {
                StoreWeaknessKVPs(w.Index, wsf.Index);
            }

            if (w.Reality.Count > 0)
            {
                StoreWeaknessKVPs(w.Reality, wsf.Reality);
            }

            EncryptionManager.EncryptFile(wPath, wsf);
        }
        private static Dictionary <string, HashSet <int> > RetrieveWeaknessKVPs(List <string> L, WeaknessSaveFile wsf)
        {
            Dictionary <string, HashSet <int> > D = new Dictionary <string, HashSet <int> >();

            foreach (string entry in L)
            {
                string[] kvp = entry.Split('%');

                string key = kvp[0];

                if (!D.ContainsKey(kvp[0]))
                {
                    D.Add(key, new HashSet <int>());
                }

                string[] values = kvp[1].Split(',');

                foreach (string v in values)
                {
                    D[key].Add(Int32.Parse(v));
                }
            }

            return(D);
        }