예제 #1
0
 //  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;
 }
예제 #2
0
 public static void Add(Room r_Room)
 {
     if (lRooms.Count == 0) { iTotalTime = 0; iTimerStart = (int)Control.DeltaTime.dCurrentTime; iTimerEnd = 0; }
     lRooms.Add(r_Room);
 }
예제 #3
0
 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;
 }