public async Task <List <HighscoreObj> > GetHighscoresAsync() { if (!HighscoreIO.IsInitialised) { await InitAsync(); } HighscoreObj retVal = null; JsonObject highscore = highscoreCompilation["hoi"].GetObject(); try { string name = highscore["Name"].GetString(); float distance = (float)highscore["Distance"].GetNumber(); string[] time = highscore["TimeTaken"].GetString().Split(':'); int hours = int.Parse(time[0]); int minutes = int.Parse(time[1]); TimeSpan timeTaken = new TimeSpan(hours, minutes, 0); } catch (KeyNotFoundException) { retVal = new HighscoreObj(); } catch { return(GetHighscoresAsync().Result); } return(null); }
/// <summary> /// Get all highscores unsorted. /// </summary> public async Task <List <HighscoreObj> > GetHighscoresAsync() { if (!HighscoreIO.IsInitialised) { await InitAsync(); } if (HighscoreIO.IsFileEmpty) { return(new List <HighscoreObj>()); } List <HighscoreObj> retVal = new List <HighscoreObj>(); try { XmlDocument xmlDoc = await XmlDocument.LoadFromFileAsync(HighscoreIO.HighscoreFile); var node = xmlDoc.SelectSingleNode("Highscores"); var nodeList = node.ChildNodes; foreach (var e in nodeList) { HighscoreObj highscore = new HighscoreObj(); highscore.Name = (string)e.Attributes[0].NodeValue; highscore.Distance = float.Parse((string)e.Attributes[1].NodeValue); highscore.TimeTaken = TimeSpan.Parse((string)e.Attributes[2].NodeValue); retVal.Add(highscore); } } catch (UnauthorizedAccessException) { retVal = null; } return(retVal); }
public async Task SaveHighscoreObj(HighscoreObj obj) { if (!HighscoreIO.IsInitialised) { await InitAsync(); } throw new NotImplementedException(); }
/// <summary> /// Saves a highscore object. /// If the file doesn't contain any highscore objects it will initialise it. /// If the file does contain any highscoreobject(s) it will append it. /// </summary> public async Task SaveHighscoreObj(HighscoreObj obj) { if (!HighscoreIO.IsInitialised) { await InitAsync(); } if (HighscoreIO.IsFileEmpty) { //Create using (XmlWriter xmlWriter = XmlWriter.Create(await HighscoreIO.HighscoreFile.OpenStreamForWriteAsync())) { xmlWriter.WriteStartDocument(); xmlWriter.WriteStartElement("Highscores"); xmlWriter.WriteStartElement("Highscore"); xmlWriter.WriteAttributeString("Name", obj.Name); xmlWriter.WriteAttributeString("Distance", obj.Distance.ToString()); xmlWriter.WriteAttributeString("Time", obj.TimeTaken.ToString()); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.WriteEndDocument(); xmlWriter.Flush(); } HighscoreIO.IsFileEmpty = false; } else { //Append XmlDocument xmlDoc = await XmlDocument.LoadFromFileAsync(HighscoreIO.HighscoreFile); var node = xmlDoc.SelectSingleNode("Highscores"); var newElement = xmlDoc.CreateElement("Highscore"); newElement.SetAttribute("Name", obj.Name); newElement.SetAttribute("Distance", obj.Distance.ToString()); newElement.SetAttribute("Time", obj.TimeTaken.ToString()); node.AppendChild(newElement); await xmlDoc.SaveToFileAsync(HighscoreIO.HighscoreFile); } }
/// <summary> /// Save a single highscore object. /// </summary> /// <param name="obj">Contains data on a throw to store</param> public async static void SaveHighscoreObj(HighscoreObj obj) { await ioHandler.SaveHighscoreObj(obj); HighscoreUpdatedEvent(); }