Beyond_Beyaan.Galaxy.Save C# (CSharp) Метод

Save() публичный Метод

public Save ( XmlWriter writer ) : void
writer System.Xml.XmlWriter
Результат void
        public void Save(XmlWriter writer)
        {
            writer.WriteStartElement("Galaxy");
            writer.WriteAttributeString("Width", GalaxySize.ToString());
            writer.WriteAttributeString("Height", GalaxySize.ToString()); //Unused at the moment until I refactor the galaxy size to be rectangle
            writer.WriteStartElement("Stars");
            foreach (var star in starSystems)
            {
                writer.WriteStartElement("Star");
                writer.WriteAttributeString("ID", star.ID.ToString());
                writer.WriteAttributeString("Name", star.Name);
                writer.WriteAttributeString("Description", star.Description);
                writer.WriteAttributeString("XPos", star.X.ToString());
                writer.WriteAttributeString("YPos", star.Y.ToString());
                writer.WriteAttributeString("Color", star.StarColor[0] + "," + star.StarColor[1] + "," + star.StarColor[2] + "," + star.StarColor[3]);
                string exploredByList = string.Empty;
                foreach (var exploredBy in star.ExploredBy)
                {
                    exploredByList = exploredByList + exploredBy.EmpireID + ",";
                }
                exploredByList = exploredByList.TrimEnd(new[] {','});
                writer.WriteAttributeString("ExploredBy", exploredByList);
                foreach (var planet in star.Planets)
                {
                    writer.WriteStartElement("Planet");
                    writer.WriteAttributeString("Name", planet.Name);
                    writer.WriteAttributeString("Type", planet.PlanetTypeString);
                    writer.WriteAttributeString("Owner", planet.Owner == null ? "-1" : planet.Owner.EmpireID.ToString());
                    writer.WriteAttributeString("MaxPopulation", planet.PopulationMax.ToString());
                    writer.WriteAttributeString("Buildings", planet.Factories.ToString());
                    writer.WriteAttributeString("EnvironmentPercentage", planet.EnvironmentAmount.ToString());
                    writer.WriteAttributeString("InfrastructurePercentage", planet.InfrastructureAmount.ToString());
                    writer.WriteAttributeString("DefensePercentage", planet.DefenseAmount.ToString());
                    writer.WriteAttributeString("ConstructionPercentage", planet.ConstructionAmount.ToString());
                    writer.WriteAttributeString("ResearchPercentage", planet.ResearchAmount.ToString());
                    writer.WriteAttributeString("EnvironmentLocked", planet.EnvironmentLocked.ToString());
                    writer.WriteAttributeString("InfrastructureLocked", planet.InfrastructureLocked.ToString());
                    writer.WriteAttributeString("DefenseLocked", planet.DefenseLocked.ToString());
                    writer.WriteAttributeString("ConstructionLocked", planet.ConstructionLocked.ToString());
                    writer.WriteAttributeString("ResearchLocked", planet.ResearchLocked.ToString());
                    writer.WriteAttributeString("ShipBuilding", planet.ShipBeingBuilt == null ? "-1" : planet.ShipBeingBuilt.DesignID.ToString());
                    writer.WriteAttributeString("AmountBuilt", planet.ShipConstructionAmount.ToString());
                    writer.WriteAttributeString("RelocatingTo", planet.RelocateToSystem == null ? "-1" : planet.RelocateToSystem.StarSystem.ID.ToString());
                    if (planet.TransferSystem.Key.StarSystem != null)
                    {
                        writer.WriteStartElement("TransferTo");
                        writer.WriteAttributeString("StarSystem", planet.TransferSystem.Key.StarSystem.ID.ToString());
                        writer.WriteAttributeString("Amount", planet.TransferSystem.Value.ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteStartElement("Races");
                    foreach (var race in planet.Races)
                    {
                        writer.WriteStartElement("Race");
                        writer.WriteAttributeString("RaceName", race.RaceName);
                        writer.WriteAttributeString("Amount", planet.GetRacePopulation(race).ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
            }
            //When neutral stuff are added, like space crystals, put them here
            writer.WriteEndElement();
            writer.WriteEndElement();
        }

Usage Example

Пример #1
0
        public void SaveGame(string filename)
        {
            XDocument saveGame = new XDocument();

            using (XmlWriter writer = saveGame.CreateWriter())
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("SaveGameData");
                Galaxy.Save(writer);
                EmpireManager.Save(writer);
                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
            try
            {
                string path = Path.Combine(GameDataSet.FullName, "Saves");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                path = Path.Combine(path, filename + ".BB");
                saveGame.Save(path);
            }
            catch (Exception e)
            {
                MessageBox.Show("Failed to save file, reason: " + e.Message);
            }
        }