Beispiel #1
0
        private static void UserEquationProcessor(Questions question, XmlDocument doc, ref XmlElement questionsElement)
        {
            if (question.Type != Questions.TypeEnum.UserEquation)
            {
                throw new ArgumentException("Given question isn't a dictionaryWord. Failed!", "userEquation");
            }
            XmlElement userEquationElement = doc.CreateElement("userEquation");

            QuestionProcessor(question, doc, ref userEquationElement);

            UserEquation userEquation = question as UserEquation;

            XmlAttribute numberAttribute   = doc.CreateAttribute("numbers");
            XmlAttribute sumAttribute      = doc.CreateAttribute("sum");
            XmlAttribute solutionAttribute = doc.CreateAttribute("solution");

            List <string> numbersConvert = new List <string>();

            foreach (int i in userEquation.numbers)
            {
                numbersConvert.Add(i.ToString());
            }

            numberAttribute.InnerText = string.Join(",", numbersConvert.ToArray());

            sumAttribute.InnerText = userEquation.sum.ToString();

            solutionAttribute.InnerText = userEquation.solve;

            userEquationElement.Attributes.Append(numberAttribute);
            userEquationElement.Attributes.Append(sumAttribute);
            userEquationElement.Attributes.Append(solutionAttribute);

            questionsElement.AppendChild(userEquationElement);
        }
Beispiel #2
0
        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
        }