public void SaveCompletedPuzzle (Puzzle puzzle) { var documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal); var filePath = Path.Combine (documentsPath, "XamWordsCompletion.xml"); List<Puzzle> puzzles = new List<Puzzle>(); if (File.Exists (filePath)) { using (Stream reader = new FileStream (filePath, FileMode.Open)) { XmlSerializer serializer = new XmlSerializer(typeof(List<Puzzle>)); puzzles = (List<Puzzle>)serializer.Deserialize (reader); } if (puzzles.Find (p => p.Name.ToUpper () == puzzle.Name.ToUpper ()) == null) { using (Stream writer = new FileStream (filePath, FileMode.Create)) { puzzles.Add(puzzle); XmlSerializer serializer = new XmlSerializer(typeof(List<Puzzle>)); serializer.Serialize (writer, puzzles); } } } else { using (Stream writer = new FileStream (filePath, FileMode.OpenOrCreate)) { puzzles.Add(puzzle); XmlSerializer serializer = new XmlSerializer(typeof(List<Puzzle>)); serializer.Serialize (writer, puzzles); } } }
public List<Word> GetWords (Puzzle puzzle) { var assembly = typeof(DatabaseService).GetTypeInfo().Assembly; Stream stream = assembly.GetManifestResourceStream("XamWords.Assets.Puzzles.xml"); List<Word> words = new List<Word>(); using (var reader = new System.IO.StreamReader (stream)) { XDocument xmlDoc = XDocument.Load(reader); var q = from xml in xmlDoc.Descendants("word") where xml.Parent.Attribute("name").Value == puzzle.Name select xml; foreach( XElement word in q ) { try { words.Add(new Word{ Text = word.Attribute("text").Value, Found = false }); } catch (Exception ex) { } } } return words; }