public XmlWrite()
 {
     // initialise levelFolder
     StaticVariables.execFolder = AppDomain.CurrentDomain.BaseDirectory;
     StaticVariables.levelFolder = StaticVariables.execFolder;
     // create world
     this.w = new World(10, 10);
     // fill world
     this.w.FillWorld(TERRAIN.grass_normal, new Size(10, 10));
     // initialize player
     this.w.InitPlayer(new PointF(5, 5));
     this.p = w.getPlayer();
     LevelWriter.saveWorld(this.w, this.file);
     beforelist = new TerrainTile[w.getTerrain().Count];
     before = new Entity[w.getEntities().Count];
     // save beforlist
     w.getTerrain().CopyTo(beforelist);
     w.getEntities().CopyTo(before);
     world = new World(10, 10);
     world.loadLevel(this.file);
     afterlist = new TerrainTile[world.getTerrain().Count];
     after = new Entity[world.getEntities().Count];
     // save afterlist
     world.getTerrain().CopyTo(afterlist);
     world.getEntities().CopyTo(after);
 }
        public static void saveWorld(World world, String fileName)
        {
            List<TerrainTile> tiles = world.getTerrain ();
            List<Entity> entities = world.getEntities ();
            Size size = world.getSize ();

            using (XmlWriter writer = XmlWriter.Create(Path.Combine(StaticVariables.levelFolder, fileName + ".xml")))
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("world");
                writer.WriteStartElement("size");
                writer.WriteElementString(xmlVar.Width, size.Width.ToString());
                writer.WriteElementString(xmlVar.Height, size.Width.ToString());
                writer.WriteEndElement();
                writer.WriteStartElement("tiles");

                foreach (TerrainTile tile in tiles)
                {
                    writer.WriteStartElement(xmlVar.Tile);
                    writer.WriteElementString(xmlVar.ID, tile.getID().ToString());
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
                writer.WriteStartElement("entities");

                foreach (Entity e in entities) {
                    writer.WriteStartElement(xmlVar.Entity);
                    writer.WriteElementString(xmlVar.ID, e.getID().ToString());
                    writer.WriteElementString(xmlVar.Type, ((int)e.getType()).ToString());
                    writer.WriteElementString(xmlVar.SpriteID, e.getSpriteID().ToString());
                    writer.WriteElementString("x", e.getLocation().X.ToString());
                    writer.WriteElementString("y", e.getLocation().Y.ToString());
                    writer.WriteElementString(xmlVar.Solid, e.getSolid().ToString());
                    writer.WriteElementString(xmlVar.DrawOrder, e.getDrawOrder().ToString());
                    writer.WriteElementString(xmlVar.BoudingBox, e.getBoundingBox().ToString());
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
        }