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