コード例 #1
0
        //Funtie om XML bestand in te laden, daarna kan je de vastgelegde variablen in deze klasse gebruiken
        public void ReadXML()
        {
            //Laad het XML bestand in een document object
            XDocument doc = XDocument.Load(this.path);

            //Initieert de variablen
            gameHighscores = new List<GameHighscores>();
            gameObjects = new List<GameObject>();

            //Voert query uit op het XML document om de properties te laden in een var
            var lproperties = from r in doc.Descendants("properties")
                             select new
                             {
                                 Title = r.Element("title").Value,
                                 Difficulty = r.Element("difficulty").Value
                             };
            //Ditzelfde voor highscores
            var highscores = from r in doc.Descendants("highscore")
                            select new
                            {
                                Name = r.Element("name").Value,
                                DateTime = r.Element("datetime").Value,
                                //Score wordt direct geconverteert naar een int omdat deze ook zo wordt weggeschreven
                                Score = Int32.Parse(r.Element("score").Value),
                            };
            //en voor object
            var items = from r in doc.Descendants("object")
                        select new
                        {
                            Type = r.Element("type").Value,
                            //Directe conversie naar int omdat deze ook zo wordt weggeschreven
                            X = Int32.Parse(r.Element("x").Value),
                            Y = Int32.Parse(r.Element("y").Value)//,
                            //Hieronder volgen dynamische gegevens en is vaak null, hier moet ik nog verder naar kijken ~jonathan
                            //Movingspeed = Int32.Parse(r.Element("movingspeed").Value),
                            //Slowdown = Int32.Parse(r.Element("slowdown").Value)
                        };
            //Voegt de gameproperties toe aan de variable gameProperties
            foreach (var property in lproperties)
            {
                gameProperties = new GameProperties(property.Title, property.Difficulty);
            }

            //Voegt alle highscores toe in een List
            foreach (var highscore in highscores)
            {
                gameHighscores.Add(new GameHighscores(highscore.Name, highscore.DateTime, highscore.Score));
            }

            //Voegt alle gameObjecten toe in een List
            foreach (var gameObject in items)
            {
                    switch (gameObject.Type)
                    {
                        case "Player":
                            //gameObjects.Add(new Player(new Point(gameObject.X, gameObject.Y)));
                        break;

                        case "Car":
                            //gameObjects.Add(new ExplodingObstacle(new Point(20, 20), "../Player.png"));
                        break;

                        case "Cyclist":
                            //gameObjects.Add(new FollowingObstacle(new Point(20, 20), "../Player.png"));
                        break;

                        case "TrafficController":
                            //gameObjects.Add(new StaticObstacle(new Point(20, 20), "../Player.png"));
                        break;

                        case "Freshmen":
                            //SlowingObstacle sb = new SlowingObstacle(new Point(20, 20))
                            //sb.MovingSpeed = 10;

                            //gameObjects.Add(sb);
                        break;
                }

            }
        }
コード例 #2
0
 public void saveLevel_Click(object sender, EventArgs e)
 {
     if (level == null)
     {
         //Als nieuw level
         string dialog = showPropertyDialog("Set properties for Level");
         if (dialog != "")
         {
             string[] returnValues = dialog.Split(new string[] { "|" }, StringSplitOptions.None);
             string title = returnValues[0].ToString();
             string difficulty = returnValues[1].ToString();
             string file;
             if (System.Diagnostics.Debugger.IsAttached)
                 file = "../levels/" + title + ".xml";
             else
                 file = AppDomain.CurrentDomain.BaseDirectory + "/levels/" + title + ".xml";
             if (!File.Exists(file)) {
                 level = new XMLParser(file);
                 GameProperties gameProperties = new GameProperties(title, difficulty);
                 level.gameProperties = gameProperties;
                 level.gameObjects = gameObjects;
                 level.WriteXML();
                 modelEditor.gamePanel.Invalidate();
             }
             else
                 MessageBox.Show("Sorry, '" + title + "' already exist. Try again with another level name.");
         }
     }
     else
     {
         // Als Edit level
         level.gameObjects = gameObjects;
         level.WriteXML();
         MessageBox.Show("Saved changes to " + level.gameProperties.title);
     }
 }
コード例 #3
0
        //Deze functie schrijft een XML file weg
        //Geef hier de gameproperties mee in het objecdt GameProperties, vervolgens een List met GameObjects daarna eenzelfde lijst voor Highscores
        public void WriteXML(GameProperties gameProperties, List<GameObject> gameObjects, List<GameHighscores> gameHighscores)
        {
            //Instellingen voor XML voor een juiste opmaak
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.OmitXmlDeclaration = true;
            settings.NewLineOnAttributes = false;
            settings.IndentChars = "     ";

            //XMLwriter aanmaken
            XmlWriter xmlWriter = XmlWriter.Create(this.path, settings);

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("level");

            xmlWriter.WriteStartElement("properties");

            xmlWriter.WriteStartElement("title");
            xmlWriter.WriteValue(gameProperties.title); //Title
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("difficulty");
            xmlWriter.WriteValue(gameProperties.difficulty); //Difficulty
            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("items");

            foreach (GameObject gameObject in gameObjects)
            {
                xmlWriter.WriteStartElement("object");

                string gameObjectType = "";
                if (gameObject is Player)
                {
                    gameObjectType = "Player";
                }
                else if (gameObject is ExplodingObstacle)
                {
                    gameObjectType = "Car";
                }
                else if (gameObject is MovingExplodingObstacle)
                {
                    gameObjectType = "Cyclist";
                }
                else if (gameObject is StaticObstacle)
                {
                    gameObjectType = "TrafficController";
                }
                else if (gameObject is SlowingObstacle)
                {
                    gameObjectType = "Freshmen";
                }
                xmlWriter.WriteStartElement("type");
                xmlWriter.WriteValue(gameObjectType); //Type
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("x");
                xmlWriter.WriteValue(gameObject); //X positie
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("y");
                xmlWriter.WriteValue(gameObject); //Y positie
                xmlWriter.WriteEndElement();

                xmlWriter.WriteEndElement();
            }

            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("highscores");

            foreach(GameHighscores gameHighscore in gameHighscores)
            {
                xmlWriter.WriteStartElement("highscore");

                xmlWriter.WriteStartElement("name");
                xmlWriter.WriteValue(gameHighscore.name); //Name
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("datetime");
                xmlWriter.WriteValue(DateTime.Now); //DateTime
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("score");
                xmlWriter.WriteValue(gameHighscore.score); //Score
                xmlWriter.WriteEndElement();

                xmlWriter.WriteEndElement();
            }

            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndDocument();
            xmlWriter.Close(); //Sluiten van XMLWriter, dit is ook het moment dat het bestand wordt weggeschreven
        }
コード例 #4
0
        //Funtie om XML bestand in te laden, daarna kan je de vastgelegde variablen in deze klasse gebruiken
        public bool ReadXML()
        {
            XDocument doc;
            try { doc = XDocument.Load(this.path); }
            catch { return false; }

            //Initieert de variablen
            gameHighscores = new List<GameHighscore>();
            gameObjects = new List<GameObject>();

            //Voert query uit op het XML document om de properties te laden in een var
            var lproperties = from r in doc.Descendants("properties")
                             select new
                             {
                                 Title = r.Element("title").Value,
                                 Difficulty = r.Element("difficulty").Value
                             };
            //Ditzelfde voor highscores
            var highscores = from r in doc.Descendants("highscore")
                            select new
                            {
                                Name = r.Element("name").Value,
                                DateTime = r.Element("datetime").Value,
                                //Score wordt direct geconverteert naar een int omdat deze ook zo wordt weggeschreven
                                Score = Int32.Parse(r.Element("score").Value),
                            };
            //en voor object
            var items = from r in doc.Descendants("object")
                        select new
                        {
                            Type = r.Element("type").Value,
                            //Directe conversie naar int omdat deze ook zo wordt weggeschreven
                            X = Int32.Parse(r.Element("x").Value),
                            Y = Int32.Parse(r.Element("y").Value),
                            Height = Int32.Parse(r.Element("height").Value),
                            Width = Int32.Parse(r.Element("width").Value),
                            //If statements voor dynamische gegevens in xml <object>
                            Movingspeed = (r.Element("movingspeed") != null) ? Int32.Parse(r.Element("movingspeed").Value): 0,
                            Slowdown = (r.Element("slowingspeed") != null) ? Int32.Parse(r.Element("slowingspeed").Value): 0,
                            Smart = (r.Element("smart") != null) ? bool.Parse(r.Element("smart").Value) : false,
                            Image = (r.Element("image") != null) ? r.Element("image").Value : ""
                       };
            //Voegt de gameproperties toe aan de variable gameProperties
            foreach (var property in lproperties)
            {
                gameProperties = new GameProperties(property.Title, property.Difficulty);
            }

            //Voegt alle highscores toe in een List
            highscores.OrderBy(o => o.Score);
            foreach (var highscore in highscores)
            {
                gameHighscores.Add(new GameHighscore(highscore.Name, highscore.DateTime, highscore.Score));
            }
            //Sorteert highscores op volgorde van behaalde score
            gameHighscores = gameHighscores.OrderBy(highscore => highscore.score).ToList();

            //Hardcoded start en eindpunt toevoegen aan level
            gameObjects.Add(new Checkpoint(new Point(750, 400), Resources.IconWIN, 80, 80, false));
            gameObjects.Add(new Checkpoint(new Point(5, -5), Resources.IconSP, 80, 80, true));

            //Voegt alle gameObjecten toe in een List
            foreach (var gameObject in items)
            {
                    switch (gameObject.Type)
                    {

                        case "ExplodingObstacle":
                            gameObjects.Add(new ExplodingObstacle(new Point(gameObject.X, gameObject.Y), gameObject.Height, gameObject.Width));
                        break;

                        case "MovingExplodingObstacle":
                            MovingExplodingObstacle moe = new MovingExplodingObstacle(new Point(gameObject.X, gameObject.Y), gameObject.Height, gameObject.Width);
                            moe.MovingSpeed = gameObject.Movingspeed;
                            moe.IsSmart = gameObject.Smart;
                            gameObjects.Add(moe);
                        break;

                        case "StaticObstacle":
                            gameObjects.Add(new StaticObstacle(new Point(gameObject.X, gameObject.Y), gameObject.Height, gameObject.Width));
                        break;

                        case "SlowingObstacle":
                            SlowingObstacle sb = new SlowingObstacle(new Point(gameObject.X, gameObject.Y), gameObject.Height, gameObject.Width);
                            sb.MovingSpeed = gameObject.Movingspeed;
                            sb.SlowingSpeed = gameObject.Slowdown;
                            sb.IsSmart = gameObject.Smart;
                            gameObjects.Add(sb);
                        break;
                }

            }
            return true;
        }
コード例 #5
0
        //Funtie om XML bestand in te laden, daarna kan je de vastgelegde variablen in deze klasse gebruiken
        public void ReadXML()
        {
            //Laad het XML bestand in een document object
            XDocument doc = XDocument.Load(this.path);

            //Initieert de variablen
            gameHighscores = new List <GameHighscores>();
            gameObjects    = new List <GameObject>();

            //Voert query uit op het XML document om de properties te laden in een var
            var lproperties = from r in doc.Descendants("properties")
                              select new
            {
                Title      = r.Element("title").Value,
                Difficulty = r.Element("difficulty").Value
            };
            //Ditzelfde voor highscores
            var highscores = from r in doc.Descendants("highscore")
                             select new
            {
                Name     = r.Element("name").Value,
                DateTime = r.Element("datetime").Value,
                //Score wordt direct geconverteert naar een int omdat deze ook zo wordt weggeschreven
                Score = Int32.Parse(r.Element("score").Value),
            };
            //en voor object
            var items = from r in doc.Descendants("object")
                        select new
            {
                Type = r.Element("type").Value,
                //Directe conversie naar int omdat deze ook zo wordt weggeschreven
                X = Int32.Parse(r.Element("x").Value),
                Y = Int32.Parse(r.Element("y").Value)            //,
                    //Hieronder volgen dynamische gegevens en is vaak null, hier moet ik nog verder naar kijken ~jonathan
                    //Movingspeed = Int32.Parse(r.Element("movingspeed").Value),
                    //Slowdown = Int32.Parse(r.Element("slowdown").Value)
            };

            //Voegt de gameproperties toe aan de variable gameProperties
            foreach (var property in lproperties)
            {
                gameProperties = new GameProperties(property.Title, property.Difficulty);
            }

            //Voegt alle highscores toe in een List
            foreach (var highscore in highscores)
            {
                gameHighscores.Add(new GameHighscores(highscore.Name, highscore.DateTime, highscore.Score));
            }

            //Voegt alle gameObjecten toe in een List
            foreach (var gameObject in items)
            {
                switch (gameObject.Type)
                {
                case "Player":
                    //gameObjects.Add(new Player(new Point(gameObject.X, gameObject.Y)));
                    break;

                case "Car":
                    //gameObjects.Add(new ExplodingObstacle(new Point(20, 20), "../Player.png"));
                    break;

                case "Cyclist":
                    //gameObjects.Add(new FollowingObstacle(new Point(20, 20), "../Player.png"));
                    break;

                case "TrafficController":
                    //gameObjects.Add(new StaticObstacle(new Point(20, 20), "../Player.png"));
                    break;

                case "Freshmen":
                    //SlowingObstacle sb = new SlowingObstacle(new Point(20, 20))
                    //sb.MovingSpeed = 10;

                    //gameObjects.Add(sb);
                    break;
                }
            }
        }
コード例 #6
0
        //Deze functie schrijft een XML file weg
        //Geef hier de gameproperties mee in het objecdt GameProperties, vervolgens een List met GameObjects daarna eenzelfde lijst voor Highscores
        public void WriteXML(GameProperties gameProperties, List <GameObject> gameObjects, List <GameHighscores> gameHighscores)
        {
            //Instellingen voor XML voor een juiste opmaak
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent              = true;
            settings.OmitXmlDeclaration  = true;
            settings.NewLineOnAttributes = false;
            settings.IndentChars         = "     ";

            //XMLwriter aanmaken
            XmlWriter xmlWriter = XmlWriter.Create(this.path, settings);

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("level");

            xmlWriter.WriteStartElement("properties");

            xmlWriter.WriteStartElement("title");
            xmlWriter.WriteValue(gameProperties.title); //Title
            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("difficulty");
            xmlWriter.WriteValue(gameProperties.difficulty); //Difficulty
            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("items");

            foreach (GameObject gameObject in gameObjects)
            {
                xmlWriter.WriteStartElement("object");

                string gameObjectType = "";
                if (gameObject is Player)
                {
                    gameObjectType = "Player";
                }
                else if (gameObject is ExplodingObstacle)
                {
                    gameObjectType = "Car";
                }
                else if (gameObject is MovingExplodingObstacle)
                {
                    gameObjectType = "Cyclist";
                }
                else if (gameObject is StaticObstacle)
                {
                    gameObjectType = "TrafficController";
                }
                else if (gameObject is SlowingObstacle)
                {
                    gameObjectType = "Freshmen";
                }
                xmlWriter.WriteStartElement("type");
                xmlWriter.WriteValue(gameObjectType); //Type
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("x");
                xmlWriter.WriteValue(gameObject); //X positie
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("y");
                xmlWriter.WriteValue(gameObject); //Y positie
                xmlWriter.WriteEndElement();

                xmlWriter.WriteEndElement();
            }

            xmlWriter.WriteEndElement();

            xmlWriter.WriteStartElement("highscores");

            foreach (GameHighscores gameHighscore in gameHighscores)
            {
                xmlWriter.WriteStartElement("highscore");

                xmlWriter.WriteStartElement("name");
                xmlWriter.WriteValue(gameHighscore.name); //Name
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("datetime");
                xmlWriter.WriteValue(DateTime.Now); //DateTime
                xmlWriter.WriteEndElement();

                xmlWriter.WriteStartElement("score");
                xmlWriter.WriteValue(gameHighscore.score); //Score
                xmlWriter.WriteEndElement();

                xmlWriter.WriteEndElement();
            }

            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndDocument();
            xmlWriter.Close(); //Sluiten van XMLWriter, dit is ook het moment dat het bestand wordt weggeschreven
        }
コード例 #7
0
ファイル: Tests.cs プロジェクト: sliscers/Windesheim-Warriors
        public void TestXMLParser_Save()
        {
            GameProperties gameProperties = new GameProperties("Test Level", "easy");

            List<GameObject> gameObjects;
            Player player;
            BuildGameField(out gameObjects, out player);

            GameHighscore gameHighscore = new GameHighscore("Test Speler", DateTime.Now.ToString(), 900);

            XMLParser xmlParser = new XMLParser("unitTestXML.xml");

            if(xmlParser == null)
                Assert.Fail("NRE");

            xmlParser.gameHighscores.Add(gameHighscore);
            xmlParser.gameProperties = gameProperties;
            xmlParser.gameObjects = gameObjects;

            if (!xmlParser.WriteXML())
                Assert.Fail("Kan niet Write XML uitvoeren");
        }
コード例 #8
0
ファイル: Tests.cs プロジェクト: sliscers/Windesheim-Warriors
        public void TestXMLParser_Load()
        {
            GameProperties gameProperties = new GameProperties("Test Level", "easy");

            List<GameObject> gameObjects;
            Player player;
            BuildGameField(out gameObjects, out player);

            GameHighscore gameHighscore = new GameHighscore("Test Speler", DateTime.Now.ToString(), 900);

            XMLParser xmlParser = new XMLParser("unitTestXML.xml");

            if (xmlParser == null)
                Assert.Fail("NRE");

            xmlParser.gameHighscores.Add(gameHighscore);
            xmlParser.gameProperties = gameProperties;
            xmlParser.gameObjects = gameObjects;

            if (!xmlParser.WriteXML())
                Assert.Fail("Kan niet Write XML uitvoeren");

            // Reset XML
            xmlParser = null;
            xmlParser = new XMLParser("unitTestXML.xml");

            if(!xmlParser.ReadXML())
                Assert.Fail("Kan niet Load XML uitvoeren");

            Assert.AreEqual(gameProperties, xmlParser.gameProperties, "GameProperties not equal");

            // We hebben checkpoints gehardcode, dus nu even verwijderen
            xmlParser.gameObjects.RemoveAt(0);
            xmlParser.gameObjects.RemoveAt(1);
            Assert.AreEqual(gameObjects.Count, xmlParser.gameObjects.Count, "GameObjects not equal");
        }