Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
 public async Task SaveHighscoreObj(HighscoreObj obj)
 {
     if (!HighscoreIO.IsInitialised)
     {
         await InitAsync();
     }
     throw new NotImplementedException();
 }
Example #4
0
        /// <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);
            }
        }
Example #5
0
        /// <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();
        }