コード例 #1
0
        void UpdateModLoadConfig()
        {
            ModLoadConfig newModLoadConfig = new ModLoadConfig();
            XmlSerializer serializer       = new XmlSerializer(typeof(ModLoadConfig));
            FileStream    stream           = new FileStream(modFolderPath + "ModLoadConfig.xml", FileMode.Create);

            for (int i = 0; i < ModList.Items.Count; i++)
            {
                newModLoadConfig.ModLoadOrder.Add(new ModLoadConfig.ModEntry(ModList.GetItemText(ModList.Items[i]), ModList.GetItemChecked(i)));
            }

            serializer.Serialize(stream, newModLoadConfig);
            stream.Close();
        }
コード例 #2
0
        void LoadMods()
        {
            if (!Directory.Exists(modFolderPath))
            {
                return;
            }

            FileStream stream = new FileInfo(modFolderPath + "ModLoadConfig.xml").OpenRead();

            modLoadConfig = (ModLoadConfig) new XmlSerializer(typeof(ModLoadConfig)).Deserialize(stream);
            stream.Close();

            FileInfo[] files = GetFilesByType(modFolderPath, "ModInfo.xml");
            foreach (FileInfo file in files)
            {
                ModInfo modInfo = new ModInfo();
                modInfo = (ModInfo) new XmlSerializer(typeof(ModInfo)).Deserialize((Stream)file.OpenRead());
                modInfos.Add(modInfo);
            }

            //Fill list with mods already in load config and in modinfos
            foreach (ModLoadConfig.ModEntry entry in modLoadConfig.ModLoadOrder)
            {
                foreach (ModInfo modInfo in modInfos)
                {
                    if (modInfo.Name == entry.Name)
                    {
                        ModList.Items.Add(entry.Name, entry.Load);
                    }
                }
            }

            //Fill list with mods not in load config
            foreach (ModInfo modInfo in modInfos)
            {
                if (!modLoadConfig.hasMod(modInfo.Name))
                {
                    ModList.Items.Add(modInfo.Name, false);
                }
            }
        }