public static XmlLoadingResult _SaveXml(string path, XmlDataSet fileData) { try { using (var stream = File.OpenWrite(path)) { XmlSerializer s = new XmlSerializer(typeof(XmlDataSet)); s.Serialize(stream, fileData); stream.Close(); } } catch (UnauthorizedAccessException) { return(XmlLoadingResult.NoPermission); } catch (SecurityException) { return(XmlLoadingResult.NoPermission); } catch (FileNotFoundException) { return(XmlLoadingResult.MissingFile); } return(XmlLoadingResult.Success); }
public static bool IsValidDataSet(string xmlFile, XmlDataSet fileData) { if (fileData == null) { return(false); } switch (xmlFile) { case XmlData.Files.Vanilla: if (!fileData.Flags.Any(x => x.ID == 1279 && x.Name == "GAME_END")) { return(false); } break; case XmlData.Files.Revamp: if (!fileData.Flags.Any(x => x.ID == 1279 && x.Name == "GAME_END")) { return(false); } if (fileData.Body.LowerBodyTypes.Any(x => x.ID == 24 && x.Name == "Deertaur")) { return(false); } if (!fileData.Body.LowerBodyTypes.Any(x => x.ID == 25 && x.Name == "Salamander")) { return(false); } if (!fileData.PerkGroups.Any(x => x.Name == "Tier 1" && x.Perks.Any(p => p.Name == "Iron Fists 3"))) { return(false); } if (!fileData.PerkGroups.Any(x => x.Name == "Events" && x.Perks.Any(p => p.Name == "Lustserker"))) { return(false); } break; case XmlData.Files.Xianxia: if (!fileData.Flags.Any(x => x.ID == 1279 && x.Name == "GAME_END")) { return(false); } if (!fileData.Flags.Any(x => x.ID == 2147 && x.Name == "PRISON_DOOR_UNLOCKED")) { return(false); } //FIXME: Add additional Xianxia tests, if necessary. break; // Not an actual file? default: return(false); } return(true); }
public static XmlLoadingResult SetAndSaveXmlData(string xmlFile, XmlDataSet fileData) { var result = SetXmlFileData(xmlFile, fileData); if (result != XmlLoadingResult.Success) { return(result); } return(SaveXml(xmlFile)); }
public static XmlLoadingResult SetXmlFileData(string xmlFile, XmlDataSet fileData, bool overwrite = true) { // If it's invalid, don't set it. if (!IsValidDataSet(xmlFile, fileData)) { return(XmlLoadingResult.InvalidFile); } // add Unknown groups if (!fileData.PerkGroups.Contains(UnknownPerks)) { fileData.PerkGroups.Add(UnknownPerks); } if (!fileData.ItemGroups.Contains(UnknownItems)) { fileData.ItemGroups.Add(UnknownItems); } if (!_files.ContainsKey(xmlFile)) { _files.Add(xmlFile, fileData); } else if (overwrite) { _files[xmlFile] = fileData; } else { return(XmlLoadingResult.AlreadyLoaded); } if (_files.Count == 1) { Select(xmlFile); } return(XmlLoadingResult.Success); }