private void RefreshCityImprovement(AgeTransform tableitem, CityImprovement reference, int index) { ConstructedBuildingGuiItem component = tableitem.GetComponent <ConstructedBuildingGuiItem>(); Diagnostics.Assert(component != null); if (component != null) { component.RefreshCityImprovement(this.City, reference, base.gameObject); component.Toggle.State = false; bool flag = !reference.SimulationObject.DescriptorHolders.Exists((SimulationDescriptorHolder match) => match.Descriptor.Name == "CityImprovementUndestroyable"); tableitem.Enable = (flag && this.interactionsAllowed && !this.IsOtherEmpire); } }
public void RemoveCityImprovement(CityImprovement cityImprovement) { if (cityImprovement == null) { return; } if (cityImprovement.CityImprovementDefinition.DeportedSimulationDescriptors != null) { cityImprovement.RemoveDeportedDescriptor(cityImprovement.CityImprovementDefinition.DeportedSimulationDescriptors); } this.cityImprovements.Remove(cityImprovement); base.RemoveChild(cityImprovement); cityImprovement.City = null; this.OnCityImprovementCollectionChange(CollectionChangeAction.Remove, cityImprovement); }
public void AddCityImprovement(CityImprovement cityImprovement, bool applyDeportedDescriptor = true) { if (cityImprovement == null) { throw new ArgumentNullException("cityImprovement"); } if (cityImprovement.CityImprovementDefinition == null) { return; } base.AddChild(cityImprovement); this.cityImprovements.Add(cityImprovement); cityImprovement.City = this; if (cityImprovement.CityImprovementDefinition.DeportedSimulationDescriptors != null && applyDeportedDescriptor) { cityImprovement.ApplyDeportedDescriptor(cityImprovement.CityImprovementDefinition.DeportedSimulationDescriptors); } this.OnCityImprovementCollectionChange(CollectionChangeAction.Add, cityImprovement); }
public override void ReadXml(XmlReader reader) { int num = reader.ReadVersionAttribute(); this.guid = reader.GetAttribute <ulong>("GUID"); this.userDefinedName = reader.GetAttribute("UserDefinedString"); this.TurnWhenToProceedWithRazing = reader.GetAttribute <int>("TurnWhenToProceedWithRazing"); this.ShouldRazeRegionBuildingWithSelf = reader.GetAttribute <bool>("ShouldRazeRegionBuildingWithSelf"); this.ShouldInjureSpyOnRaze = reader.GetAttribute <bool>("ShouldInjureSpyOnRaze"); this.AdministrationSpeciality = reader.GetAttribute <string>("AdministrationSpeciality"); AICityState aicityState; if (!StaticString.IsNullOrEmpty(this.AdministrationSpeciality) && (!Databases.GetDatabase <AICityState>(false).TryGetValue(this.AdministrationSpeciality, out aicityState) || !aicityState.IsGuiCompliant)) { this.AdministrationSpeciality = StaticString.Empty; } base.ReadXml(reader); int attribute = reader.GetAttribute <int>("Count"); reader.ReadStartElement("Districts"); this.districts.Clear(); for (int i = 0; i < attribute; i++) { District district = new District(reader.GetAttribute <ulong>("GUID")); reader.ReadElementSerializable <District>(ref district); if (district != null) { this.AddDistrict(district); } } reader.ReadEndElement("Districts"); if (num >= 2) { if (reader.IsNullElement()) { reader.Skip(); } else { Militia militia = new Militia(reader.GetAttribute <ulong>("GUID")); militia.Empire = this.Empire; reader.ReadElementSerializable <Militia>(ref militia); this.Militia = militia; if (this.Militia != null) { base.AddChild(this.Militia); } } } int attribute2 = reader.GetAttribute <int>("Count"); reader.ReadStartElement("Improvements"); this.cityImprovements.Clear(); for (int j = 0; j < attribute2; j++) { CityImprovement cityImprovement = new CityImprovement(reader.GetAttribute <ulong>("GUID")); reader.ReadElementSerializable <CityImprovement>(ref cityImprovement); if (cityImprovement != null) { this.AddCityImprovement(cityImprovement, false); } } reader.ReadEndElement("Improvements"); this.WorldPosition = reader.ReadElementSerializable <WorldPosition>(); if (num >= 2 && this.Militia != null) { this.Militia.WorldPosition = this.WorldPosition; } if (reader.IsStartElement("BesiegingEmpireIndex")) { int num2 = reader.ReadElementString <int>("BesiegingEmpireIndex"); this.BesiegingEmpireIndex = num2; } if (num >= 3) { if (reader.IsNullElement()) { reader.Skip(); } else { CadastralMap cadastralMap = new CadastralMap(); reader.ReadElementSerializable <CadastralMap>(ref cadastralMap); this.CadastralMap = cadastralMap; } } if (num >= 4) { this.TradeRoutes.Clear(); int attribute3 = reader.GetAttribute <int>("Count"); reader.ReadStartElement("TradeRoutes"); for (int k = 0; k < attribute3; k++) { TradeRoute item = new TradeRoute(); reader.ReadElementSerializable <TradeRoute>(ref item); this.TradeRoutes.Add(item); } base.SetPropertyBaseValue(SimulationProperties.IntermediateTradeRoutesCount, 0f); base.SetPropertyBaseValue(SimulationProperties.IntermediateTradeRoutesDistance, 0f); base.SetPropertyBaseValue(SimulationProperties.IntermediateTradeRoutesGain, 0f); reader.ReadEndElement("TradeRoutes"); } if (num >= 5) { int attribute4 = reader.GetAttribute <int>("Count"); if (this.Ownership.Length < attribute4) { this.Ownership = new float[attribute4]; } reader.ReadStartElement("Ownerships"); for (int l = 0; l < attribute4; l++) { this.Ownership[l] = reader.ReadElementString <float>("Ownership"); } reader.ReadEndElement("Ownerships"); } if (num >= 6) { this.DryDockPosition = reader.ReadElementSerializable <WorldPosition>(); } if (num >= 7) { Camp camp = new Camp(reader.GetAttribute <ulong>(Camp.SerializableNames.CampGUID)) { Empire = this.Empire }; reader.ReadElementSerializable <Camp>(ref camp); if (camp != null) { for (int m = 0; m < camp.Districts.Count; m++) { camp.Districts[m].City = this; base.AddChild(camp.Districts[m]); camp.Districts[m].Refresh(false); } this.Camp = camp; } } if (num >= 8) { this.lastNonInfectedOwnerIndex = reader.ReadElementString <int>("LastNonInfectedOwnerIndex"); } }