// SAVING AND LOADING public static bool SaveFile(String s_File, Room r_Room) { if (!Directory.Exists(sPath)) { Directory.CreateDirectory(sPath); } //Start the settings and set Indent to true for cleaner looking code XmlWriterSettings XWSettings = new XmlWriterSettings(); XWSettings.Indent = true; using (XmlWriter XMLWriter = XmlWriter.Create(sPath + s_File + ".rmfile", XWSettings)) { //Start the XML writer XMLWriter.WriteStartDocument(); XMLWriter.WriteStartElement("Room"); if (Game1.ePlayer != null) { XMLWriter.WriteAttributeString("Player", true.ToString()); } else { XMLWriter.WriteAttributeString("Player", false.ToString()); } XMLWriter.WriteAttributeString("Items", r_Room.Items.Count.ToString()); XMLWriter.WriteAttributeString("Entities", r_Room.Entities.Count.ToString()); XMLWriter.WriteAttributeString("Obstacles", r_Room.Objects.Count.ToString()); //for each everything in room, save it r_Room.RoomBase.xmlExport(XMLWriter); if (Game1.ePlayer != null) { Game1.ePlayer.xmlExport(XMLWriter); } foreach (Items.Item i in r_Room.Items) { if (i.GetType() == typeof(Items.Psyche)) { ((Items.Psyche)i).xmlExport(XMLWriter); } else if (i.GetType() == typeof(Items.Weapon)) { ((Items.Weapon)i).xmlExport(XMLWriter); } } foreach (Entities.Entity e in r_Room.Entities) { if (e.GetType() == typeof(Entities.Enemy)) { ((Entities.Enemy)e).xmlExport(XMLWriter); } else if (e.GetType() == typeof(Entities.BasicEnemy)) { ((Entities.BasicEnemy)e).xmlExport(XMLWriter); } else if (e.GetType() == typeof(Entities.BossEnemy)) { ((Entities.BossEnemy)e).xmlExport(XMLWriter); } else if (e.GetType() == typeof(Entities.SpawnerEnemy)) { ((Entities.SpawnerEnemy)e).xmlExport(XMLWriter); } } foreach (Rooms.Door d in r_Room.Doors) { d.xmlExport(XMLWriter); } foreach (Rooms.Obstacle o in r_Room.Objects) { o.xmlExport(XMLWriter); } XMLWriter.WriteEndElement(); XMLWriter.WriteEndDocument(); } return true; }
public static void Add(Room r_Room) { if (lRooms.Count == 0) { iTotalTime = 0; iTimerStart = (int)Control.DeltaTime.dCurrentTime; iTimerEnd = 0; } lRooms.Add(r_Room); }
public static Room LoadFile(ContentManager Content, String s_File) { XmlReaderSettings settings = new XmlReaderSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; settings.IgnoreWhitespace = true; settings.IgnoreComments = true; Room instance = new Room(); using (XmlReader XMLReader = XmlReader.Create(s_File, settings)) { //go through the file finding these nodes and loading them while (XMLReader.Read()) { if (XMLReader.IsStartElement()) { switch (XMLReader.Name) { case "Room": //Console.WriteLine("Start <Room> element."); break; case "AnimatedSprite": //Console.WriteLine("Start <AnimatedSprite> element."); instance.RoomBase = new AnimatedSprite(); instance.RoomBase.xmlImport(XMLReader, Content); break; case "Weapon": //Console.WriteLine("Start <Weapon> element."); Items.Weapon wpn = new Items.Weapon(); wpn.xmlImport(XMLReader, Content); instance.AddItem(wpn); break; case "Psyche": //Console.WriteLine("Start <Psyche> element."); Items.Psyche psy = new Items.Psyche(); psy.xmlImport(XMLReader, Content); instance.AddItem(psy); break; case "Player": //Console.WriteLine("Start <Player> element."); Game1.ePlayer = new Entities.Player(Content); Game1.ePlayer.xmlImport(XMLReader, Content); break; case "Enemy": //Console.WriteLine("Start <Enemy> element."); Entities.Enemy eny = new Entities.Enemy(); eny.xmlImport(XMLReader, Content); instance.AddEntity(eny); break; case "BasicEnemy": //Console.WriteLine("Start <BasicEnemy> element."); Entities.BasicEnemy bsceny = new Entities.BasicEnemy(); bsceny.xmlImport(XMLReader, Content); instance.AddEntity(bsceny); break; case "SpawnerEnemy": //Console.WriteLine("Start <SpawnerEnemy> element."); Entities.SpawnerEnemy swpeny = new Entities.SpawnerEnemy(); swpeny.xmlImport(XMLReader, Content); instance.AddEntity(swpeny); break; case "BossEnemy": //Console.WriteLine("Start <BossEnemy> element."); Entities.BossEnemy bosseny = new Entities.BossEnemy(); bosseny.xmlImport(XMLReader, Content); instance.AddEntity(bosseny); break; case "Obstacle": //Console.WriteLine("Start <Obstacle> element."); Obstacle obs = new Obstacle(); obs.xmlImport(XMLReader, Content); instance.AddObject(obs); break; } } } //Console.WriteLine("End <Room> element."); } return instance; }