Example #1
0
        static async Task <UpdateResult> UpdateStatusEffects(string repo, string tree, XmlDataSet fileData)
        {
            var    file = XianxiaStatusEffectsFile;
            string content;

            try
            {
                content = await GitHubGetters.GetContentFile(repo, tree, file);

                Dictionary <string, string> olddescs = new Dictionary <string, string>();
                //collect the old descriptions
                foreach (XmlNamedVector4 status in fileData.Statuses)
                {
                    if (status.Description != null && status.Description != "")
                    {
                        olddescs.Add(status.Name, status.Description);
                    }
                }
                var statusEffects = ParseStatusEffects(content, olddescs);
                if (statusEffects == null)
                {
                    return(UpdateResult.Error);
                }
                fileData.Statuses = statusEffects;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error with getting/parsing " + file + ":");
                Console.WriteLine(e);
                return(UpdateResult.Error);
            }

            return(UpdateResult.UpdatedFiles);
        }
Example #2
0
        static async Task <UpdateResult> DoUpdate(bool useMaster = false)
        {
            try
            {
                string tree;
                var    repo = XianxiaRepo;

                if (useMaster)
                {
                    tree = "master-wip";
                }
                else
                {
                    tree = await GitHubGetters.GetLatestVersion(repo);
                }
                var xmlPath = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
                xmlPath = Path.Combine(xmlPath, XmlData.Files.Xianxia);
                XmlDataSet fileData = XmlData._LoadXmlData(xmlPath);

                if (useMaster == false)
                {
                    var currentVersion   = NuGetVersion.Parse(fileData.Version);
                    var availableVersion = NuGetVersion.Parse(tree);
                    //If current version is at or greater than the available version, return
                    if (VersionComparer.Compare(currentVersion, availableVersion, VersionComparison.Default) >= 0)
                    {
                        Console.WriteLine("Xianxia data file is current, no need for update");
                        return(UpdateResult.NoneNecessary);
                    }
                }
                if (await UpdateStatusEffects(repo, tree, fileData) != UpdateResult.UpdatedFiles)
                {
                    Console.WriteLine("Error! Could not parse status file!");
                    return(UpdateResult.Error);
                }
                if (await UpdateFlags(repo, tree, fileData) != UpdateResult.UpdatedFiles)
                {
                    Console.WriteLine("Error! Could not parse flag file!");
                    return(UpdateResult.Error);
                }
                fileData.Version = tree;
                if (XmlData._SaveXml(xmlPath, fileData) != XmlLoadingResult.Success)
                {
                    Console.WriteLine("Error! Could not save xml!");
                    return(UpdateResult.Error);
                }
                Console.WriteLine("saved xml!");
            }
            catch (Exception e)
            {
                Console.WriteLine("Error! " + e.ToString());
                return(UpdateResult.Error);
            }
            return(UpdateResult.UpdatedFiles);
        }
Example #3
0
        static async Task <UpdateResult> UpdateFlags(string repo, string tree, XmlDataSet fileData)
        {
            var    file = XianxiaFlagsFile;
            string content;

            try
            {
                content = await GitHubGetters.GetContentFile(repo, tree, file);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error getting " + file + ":");
                Console.WriteLine(e);
                return(UpdateResult.Error);
            }
            XmlEnum[] flags = ParseFlags(content);
            fileData.Flags = flags;
            return(UpdateResult.UpdatedFiles);
        }