private void OnDestroyCityImprovementResult(object sender, MessagePanelResultEventArgs e)
    {
        MessagePanelResult result = e.Result;

        if (result == MessagePanelResult.Ok)
        {
            List <ConstructedBuildingGuiItem> children = this.CityImprovementsTable.GetChildren <ConstructedBuildingGuiItem>(true);
            for (int i = 0; i < children.Count; i++)
            {
                if (children[i].Toggle.State && this.playerControllerRepository != null)
                {
                    base.AgeTransform.Enable = false;
                    OrderDestroyCityImprovement order = new OrderDestroyCityImprovement(this.City.Empire.Index, children[i].CityImprovement);
                    Ticket ticket;
                    this.playerControllerRepository.ActivePlayerController.PostOrder(order, out ticket, new EventHandler <TicketRaisedEventArgs>(this.OnOrderResponse));
                }
            }
            List <ConstructedBuildingGuiItem> children2 = this.RegionBuildingsTable.GetChildren <ConstructedBuildingGuiItem>(true);
            for (int j = 0; j < children2.Count; j++)
            {
                if (children2[j].Toggle.State && this.playerControllerRepository != null)
                {
                    base.AgeTransform.Enable = false;
                    OrderDestroyPointOfInterestImprovement order2 = new OrderDestroyPointOfInterestImprovement(this.City.Empire.Index, children2[j].PointOfInterest);
                    Ticket ticket2;
                    this.playerControllerRepository.ActivePlayerController.PostOrder(order2, out ticket2, new EventHandler <TicketRaisedEventArgs>(this.OnOrderResponse));
                }
            }
        }
        this.RefreshContent();
    }
 public override void Execute(Army army, global::PlayerController playerController, out Ticket ticket, EventHandler <TicketRaisedEventArgs> ticketRaisedEventHandler, params object[] parameters)
 {
     ticket = null;
     ArmyAction.FailureFlags.Clear();
     if (this is IArmyActionWithTargetSelection)
     {
         PointOfInterest pointOfInterest = null;
         if (parameters != null && parameters.Length != 0 && parameters[0] is PointOfInterest)
         {
             pointOfInterest = (parameters[0] as PointOfInterest);
         }
         if (pointOfInterest != null)
         {
             OrderDestroyPointOfInterestImprovement orderDestroyPointOfInterestImprovement = new OrderDestroyPointOfInterestImprovement(army.Empire.Index, pointOfInterest.GUID);
             orderDestroyPointOfInterestImprovement.ArmyGUID       = army.GUID;
             orderDestroyPointOfInterestImprovement.ArmyActionName = this.Name;
             orderDestroyPointOfInterestImprovement.NumberOfActionPointsToSpend = base.GetCostInActionPoints();
             orderDestroyPointOfInterestImprovement.ArmyActionCooldownDuration  = base.ComputeCooldownDuration(army);
             Diagnostics.Assert(playerController != null);
             playerController.PostOrder(orderDestroyPointOfInterestImprovement, out ticket, ticketRaisedEventHandler);
             return;
         }
     }
     else
     {
         this.ListNearbyPointsOfInterest(army);
         this.FilterPointsOfInterest(army, ref ArmyAction.FailureFlags);
         if (ArmyAction.FailureFlags.Count == 0 && this.PointsOfInterest.Count > 0)
         {
             GameEntityGUID[] array = (from enumerator in this.PointsOfInterest
                                       where enumerator.PointOfInterestImprovement != null && enumerator.CreepingNodeGUID == GameEntityGUID.Zero
                                       select enumerator.GUID).ToArray <GameEntityGUID>();
             GameEntityGUID[] array2 = (from enumerator in this.PointsOfInterest
                                        where enumerator.CreepingNodeGUID != GameEntityGUID.Zero
                                        select enumerator.CreepingNodeGUID).ToArray <GameEntityGUID>();
             for (int i = 0; i < array2.Length; i++)
             {
                 StaticString armyActionName = new StaticString();
                 if (i == 0 && array.Length == 0)
                 {
                     armyActionName = this.Name;
                 }
                 OrderDismantleCreepingNodeSucceed order = new OrderDismantleCreepingNodeSucceed(army.Empire.Index, army.GUID, array2[i], armyActionName);
                 playerController.PostOrder(order);
             }
             if (array.Length != 0)
             {
                 OrderDestroyPointOfInterestImprovement orderDestroyPointOfInterestImprovement2 = new OrderDestroyPointOfInterestImprovement(army.Empire.Index, array);
                 orderDestroyPointOfInterestImprovement2.ArmyGUID       = army.GUID;
                 orderDestroyPointOfInterestImprovement2.ArmyActionName = this.Name;
                 orderDestroyPointOfInterestImprovement2.NumberOfActionPointsToSpend = base.GetCostInActionPoints();
                 orderDestroyPointOfInterestImprovement2.ArmyActionCooldownDuration  = base.ComputeCooldownDuration(army);
                 Diagnostics.Assert(playerController != null);
                 playerController.PostOrder(orderDestroyPointOfInterestImprovement2, out ticket, ticketRaisedEventHandler);
             }
         }
     }
 }