Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        public static XmlLoadingResult SetAndSaveXmlData(string xmlFile, XmlDataSet fileData)
        {
            var result = SetXmlFileData(xmlFile, fileData);

            if (result != XmlLoadingResult.Success)
            {
                return(result);
            }
            return(SaveXml(xmlFile));
        }
Example #4
0
        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);
        }