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);
        }
    }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
    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");
        }
    }