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(); }
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); } } }