public override void WriteXml(XmlWriter writer) { int num = writer.WriteVersionAttribute(2); writer.WriteAttributeString <GameEntityGUID>("GUID", this.GUID); writer.WriteAttributeString("UserDefinedString", this.userDefinedName); if (num >= 2) { writer.WriteAttributeString("Orientation", this.orientation.ToString()); } base.WriteXml(writer); Region region = this.PointOfInterest.Region; int value = Array.IndexOf <PointOfInterest>(region.PointOfInterests, this.PointOfInterest); writer.WriteElementString <int>("IndexOfPointOfInterest", value); writer.WriteElementString <int>("IndexOfRegion", region.Index); writer.WriteElementString <int>("OccupantIndex", this.isOccupiedByIndex); writer.WriteStartElement("Facilities"); writer.WriteAttributeString <int>("Count", this.facilities.Count); for (int i = 0; i < this.facilities.Count; i++) { region = this.facilities[i].Region; writer.WriteElementString <int>("IndexOfPointOfInterest", Array.IndexOf <PointOfInterest>(region.PointOfInterests, this.facilities[i])); writer.WriteElementString <int>("IndexOfRegion", region.Index); } writer.WriteEndElement(); Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable = this.WorldPosition; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable); }
private void SaveGame(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanWrite) { throw new ArgumentException("stream"); } using (Amplitude.Xml.XmlWriter xmlWriter = Amplitude.Xml.XmlWriter.Create(stream)) { xmlWriter.Writer.WriteStartDocument(); xmlWriter.WriteStartElement(base.GetType().ToString()); xmlWriter.WriteAttributeString("DateTime", DateTime.Now.ToString("U")); Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable = this.Game as Amplitude.Xml.Serialization.IXmlSerializable; xmlWriter.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable); xmlWriter.WriteEndElement(); } }
public virtual void ReadXml(XmlReader reader) { int num = reader.ReadVersionAttribute(); reader.ReadStartElement(); this.researchQueues.Clear(); int num2 = reader.ReadElementString <int>("QueuesCount"); reader.ReadStartElement("ResearchQueues"); for (int i = 0; i < num2; i++) { reader.ReadStartElement("Queue"); int key = reader.ReadElementString <int>("EmpireIndex"); ConstructionQueue constructionQueue = new ConstructionQueue(); Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable = constructionQueue; reader.ReadElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>("Researches", ref xmlSerializable); for (int j = constructionQueue.Length - 1; j >= 0; j--) { Construction construction = constructionQueue.PeekAt(j); if (construction.ConstructibleElement == null) { Diagnostics.LogWarning("Compatibility issue, constructible element (name: '{0}') is null.", new object[] { construction.ConstructibleElementName }); constructionQueue.Remove(construction); } } this.researchQueues.Add(key, constructionQueue); reader.ReadEndElement("Queue"); } reader.ReadEndElement("ResearchQueues"); int num3 = reader.ReadElementString <int>("ResearchedTechsCount"); reader.ReadStartElement("ResearchedTechs"); for (int k = 0; k < num3; k++) { this.researchedTechNames.Add(reader.ReadElementString("TechName")); } reader.ReadEndElement("ResearchedTechs"); }
public virtual void WriteXml(XmlWriter writer) { writer.WriteAttributeString("AssemblyQualifiedName", base.GetType().AssemblyQualifiedName); writer.WriteVersionAttribute(1); writer.WriteElementString <int>("QueuesCount", this.researchQueues.Count); writer.WriteStartElement("ResearchQueues"); foreach (KeyValuePair <int, ConstructionQueue> keyValuePair in this.researchQueues) { writer.WriteStartElement("Queue"); writer.WriteElementString <int>("EmpireIndex", keyValuePair.Key); Amplitude.Xml.Serialization.IXmlSerializable value = keyValuePair.Value; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>("Researches", ref value); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteElementString <int>("ResearchedTechsCount", this.researchedTechNames.Count); writer.WriteStartElement("ResearchedTechs"); for (int i = 0; i < this.researchedTechNames.Count; i++) { writer.WriteElementString("TechName", this.researchedTechNames[i]); } writer.WriteEndElement(); }
public override void WriteXml(XmlWriter writer) { int num = writer.WriteVersionAttribute(8); writer.WriteAttributeString <GameEntityGUID>("GUID", this.GUID); writer.WriteAttributeString("UserDefinedString", this.userDefinedName); if (this.TurnWhenToProceedWithRazing != 0) { writer.WriteAttributeString <int>("TurnWhenToProceedWithRazing", this.TurnWhenToProceedWithRazing); } writer.WriteAttributeString <bool>("ShouldRazeRegionBuildingWithSelf", this.ShouldRazeRegionBuildingWithSelf); writer.WriteAttributeString <bool>("ShouldInjureSpyOnRaze", this.ShouldInjureSpyOnRaze); writer.WriteAttributeString <StaticString>("AdministrationSpeciality", this.AdministrationSpeciality); base.WriteXml(writer); writer.WriteStartElement("Districts"); writer.WriteAttributeString("Count", this.districts.Count.ToString()); for (int i = 0; i < this.districts.Count; i++) { Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable = this.districts[i]; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable); } writer.WriteEndElement(); if (num >= 2) { Amplitude.Xml.Serialization.IXmlSerializable militia = this.Militia; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref militia); } writer.WriteStartElement("Improvements"); writer.WriteAttributeString("Count", this.cityImprovements.Count.ToString()); for (int j = 0; j < this.cityImprovements.Count; j++) { Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable2 = this.cityImprovements[j]; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable2); } writer.WriteEndElement(); Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable3 = this.WorldPosition; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable3); if (this.BesiegingEmpire != null) { writer.WriteElementString <int>("BesiegingEmpireIndex", this.besiegingEmpireIndex); } if (num >= 3) { Amplitude.Xml.Serialization.IXmlSerializable cadastralMap = this.CadastralMap; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref cadastralMap); } if (num >= 4) { writer.WriteStartElement("TradeRoutes"); writer.WriteAttributeString <int>("Count", this.TradeRoutes.Count); for (int k = 0; k < this.TradeRoutes.Count; k++) { Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable4 = this.TradeRoutes[k]; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable4); } writer.WriteEndElement(); } if (num >= 5) { writer.WriteStartElement("Ownerships"); writer.WriteAttributeString <int>("Count", this.Ownership.Length); for (int l = 0; l < this.Ownership.Length; l++) { writer.WriteElementString <float>("Ownership", this.Ownership[l]); } writer.WriteEndElement(); } if (num >= 6) { Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable5 = this.DryDockPosition; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable5); } if (num >= 7) { Amplitude.Xml.Serialization.IXmlSerializable xmlSerializable6 = this.Camp; writer.WriteElementSerializable <Amplitude.Xml.Serialization.IXmlSerializable>(ref xmlSerializable6); } if (num >= 8) { writer.WriteElementString <int>("LastNonInfectedOwnerIndex", this.lastNonInfectedOwnerIndex); } }