private static void UserWordProcessor(Questions question, XmlDocument doc, ref XmlElement questionsElement) { if (question.Type != Questions.TypeEnum.UserWord) { throw new ArgumentException("Given question isn't a user word. Failed!", "question"); } XmlElement userWordElement = doc.CreateElement("userWord"); QuestionProcessor(question, doc, ref userWordElement); UserWord userWord = question as UserWord; XmlAttribute wordAttribute = doc.CreateAttribute("word"); wordAttribute.InnerText = userWord.Word; userWordElement.Attributes.Append(wordAttribute); questionsElement.AppendChild(userWordElement); }
static void XMLLoader(FileStream fileToOpen) { Tools.Console.Info("XML dosyasından yükleniyor:" + fileToOpen.Name + " ..."); //Open file XmlDocument file = new XmlDocument(); file.Load(fileToOpen); Tools.Console.Info("Dosya başarılı bir şekilde açıldı."); if (file.InnerXml == string.Empty) { Tools.Console.Error("Yüklenen dosya boş."); throw new FileLoadException("Yüklenen dosya boş.", fileToOpen.Name); } #region Players Tools.Console.Info("Oyuncular yükleniyor..."); // if players node exists if (file.SelectSingleNode("bkbi/players") != null) { //Counter for how many child nodes there are int count = 0; #region NodeScanner //do this for each of its nodes foreach (XmlElement p in file.SelectSingleNode("bkbi/players").ChildNodes) { //if it is a "player" node if (p.Name == "player") { //Increase counter count++; //Create a new player Player playerInstance = new Player(); Program.ControlPanel.playersListViewBox.Items.Add(playerInstance.menuItem); Tools.Console.Info("Yeni oyuncu eklendi (" + count.ToString() + ")"); //Name XmlAttribute nameAttribute = p.Attributes["name"]; if (nameAttribute != null && nameAttribute.InnerText != string.Empty) { playerInstance.setName(nameAttribute.InnerText); } else { Tools.Console.Warning("Oyuncunun adı boş veya ad bölümü eksik. Atlandı."); } //inGame XmlAttribute inGameAttribute = p.Attributes["inGame"]; if (inGameAttribute != null && inGameAttribute.InnerText != string.Empty) { bool b = true; try { b = bool.Parse(inGameAttribute.InnerText); } catch { Tools.Console.Warning("Oyuncunun oyunda olma değeri hatalı. Oyunda olduğu var sayılıyor."); } finally { playerInstance.setInGame(b); } } else { Tools.Console.Warning("Oyuncunun oyunda olama durumu bölümü eksik veya boş. Oyunda var sayılıyor."); playerInstance.setInGame(true); } //points XmlAttribute pointsAttribute = p.Attributes["points"]; if (pointsAttribute != null && pointsAttribute.InnerText != string.Empty) { uint i = 0; try { i = uint.Parse(pointsAttribute.InnerText); } catch { Tools.Console.Warning("Oyuncunun puan verisi hatalı. Puanı 0(sıfır) var sayılıyor."); } finally { if (i != 0) { playerInstance.addPoints(i); } } } else { Tools.Console.Warning("Oyuncunun puan verisi eksik veya boş. Puanın sıfır var sayılıyor."); } //profile picture XmlAttribute profilePicturePathAttribute = p.Attributes["iconPath"]; if (profilePicturePathAttribute != null && profilePicturePathAttribute.InnerText != string.Empty) { string path = profilePicturePathAttribute.InnerText; if (File.Exists(path)) { try { using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path)) { playerInstance.setPP(bmp); } } catch { Tools.Console.Warning("Yol bir resim dosyasına gitmiyor,dosya bozuk veya desteklenmiyor."); } } else { Tools.Console.Warning("Profil fotoğrafı yolu bir dosyaya varmıyor. Atlandı."); } } } else { Tools.Console.Warning("Bilinmeyen bölüm:" + p.Name + ". Atlandı."); } } #endregion //if no player node is present if (count == 0) { Tools.Console.Warning("Yüklenicek oyunculara rastlanılmadı."); } else //if player nodes are present { //report how many has been loaded. Tools.Console.Info(count.ToString() + " oyuncu yüklendi."); } } else { Tools.Console.Warning("Oyuncular bölümü yok!"); } #endregion #region Questions Tools.Console.Info("Sorular yükleniyor..."); //if questions node exists if (file.SelectSingleNode("bkbi/questions") != null) { //Counter for how many child nodes there are int count = 0; //Set the dictionaryPath XmlAttribute dictionaryAttribute = file.SelectSingleNode("bkbi/questions").Attributes["dictionaryPath"]; if (dictionaryAttribute != null && dictionaryAttribute.InnerText != string.Empty) { if (File.Exists(dictionaryAttribute.InnerText)) { DictionaryWord.changeDictionary(dictionaryAttribute.InnerText); } else { Tools.Console.Warning("Sözlük yolu bir dosyaya varmıyor. Atlanıldı."); } } else { Tools.Console.Warning("Sözlük yolu hanesi boş veya yok. Atlanıldı."); } #region NodeScanner //do this for each node foreach (XmlElement q in file.SelectSingleNode("bkbi/questions").ChildNodes) { switch (q.Name) { //for userWords #region UserWord case "userWord": Tools.Console.Info("Kullanıcı kelimesi yükleniyor."); UserWord uw = new UserWord(); Program.ControlPanel.eqAndWordsListViewBox.Items.Add(uw.menuItem); uw.SetWorth(getWorthFromQuestionXml(q)); uw.SetUsed(getUsedFromQuestionXml(q)); XmlAttribute wordAttribute = q.Attributes["word"]; if (wordAttribute != null && wordAttribute.InnerText != string.Empty) { uw.setUserWord(wordAttribute.InnerText); } else { Tools.Console.Warning("Kullanıcı kelimesinin kelimesi eksik. Atlandı"); } count++; break; #endregion //for userEquations #region User Equation case "userEquation": Tools.Console.Info("Kullanıcı işlemi yükleniyor."); UserEquation uq = new UserEquation(); Program.ControlPanel.eqAndWordsListViewBox.Items.Add(uq.menuItem); uq.SetWorth(getWorthFromQuestionXml(q)); uq.SetUsed(getUsedFromQuestionXml(q)); XmlAttribute sumAttribute = q.Attributes["sum"]; int sum = 0; if (sumAttribute != null && sumAttribute.InnerText != string.Empty) { try { sum = int.Parse(sumAttribute.InnerText); } catch { Tools.Console.Warning("Kullanıcı işleminin toplam değeri hatalı. 0 varsayıldı"); } } else { Tools.Console.Warning("Kullanıcı işleminin toplam değeri boş veya yok. 0 varsayıldı"); } XmlAttribute numbersAttribute = q.Attributes["numbers"]; int[] numbers = new int[6]; if (numbersAttribute != null && numbersAttribute.InnerText != string.Empty) { string[] toConvert = numbersAttribute.InnerText.Split(','); for (int i = 0; i < numbers.Length; i++) { numbers[i] = 0; try { numbers[i] = int.Parse(toConvert[i]); } catch { Tools.Console.Warning("Kullanici işleminin " + i.ToString() + ". numarası hatalı."); } } } else { Tools.Console.Warning("Kullanıcı işleminin sayıları eksik veya boş."); } XmlAttribute solutionAttribute = q.Attributes["solution"]; string solutionString = ""; if (solutionAttribute != null && solutionAttribute.InnerText != string.Empty) { solutionString = solutionAttribute.InnerText; } else { Tools.Console.Warning("Kullanıcı işleminin çözüm bölümü eksik veya boş. Atlanıldı."); } uq.set(sum, solutionString, numbers); count++; break; #endregion // For dictionaryWords #region DictionaryWord case "dictionaryWord": Tools.Console.Info("Sözlük Kelimesi Yükleniyor."); DictionaryWord dw = new DictionaryWord(); Program.ControlPanel.eqAndWordsListViewBox.Items.Add(dw.menuItem); dw.SetWorth(getWorthFromQuestionXml(q)); dw.SetUsed(getUsedFromQuestionXml(q)); count++; break; #endregion //for autoequations #region AutoEquation case "autoEquation": Tools.Console.Info("Otomatik İşlem Yükleniyor."); AutoEquation aq = new AutoEquation(); Program.ControlPanel.eqAndWordsListViewBox.Items.Add(aq.menuItem); aq.SetWorth(getWorthFromQuestionXml(q)); aq.SetUsed(getUsedFromQuestionXml(q)); count++; break; #endregion //for foreign nodes default: Tools.Console.Warning("Bilinmeğen bölüm:" + q.Name); break; } } #endregion //if no questions nodes exist if (count == 0) { Tools.Console.Warning("Yüklenicek sorulara rastlanmadı."); } else { Tools.Console.Info(count.ToString() + " soru yüklendi."); } } else { Tools.Console.Warning("Sorular bölümü yok."); } #endregion #region MISC #endregion }