Пример #1
0
    private void QueueResearch()
    {
        IGameService service = Services.GetService <IGameService>();

        Diagnostics.Assert(service != null);
        IPlayerControllerRepositoryService service2 = service.Game.Services.GetService <IPlayerControllerRepositoryService>();

        if (service2 != null)
        {
            if (this.TechnologyDefinition.HasTechnologyFlag(DepartmentOfScience.ConstructibleElement.TechnologyFlag.KaijuUnlock))
            {
                OrderQueueKaijuResearch order = new OrderQueueKaijuResearch(this.empire.Index, this.TechnologyDefinition);
                Ticket ticket;
                service2.ActivePlayerController.PostOrder(order, out ticket, new EventHandler <TicketRaisedEventArgs>(this.OnOrderResponse));
                return;
            }
            OrderQueueResearch orderQueueResearch = new OrderQueueResearch(this.empire.Index, this.TechnologyDefinition);
            if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
            {
                orderQueueResearch.InsertAtFirstPlace = true;
            }
            Ticket ticket2;
            service2.ActivePlayerController.PostOrder(orderQueueResearch, out ticket2, new EventHandler <TicketRaisedEventArgs>(this.OnOrderResponse));
        }
    }
Пример #2
0
 private void TryForceShipyardResearch()
 {
     DepartmentOfScience.ConstructibleElement constructibleElement;
     if (base.AIEntity.Empire.GetAgency <DepartmentOfScience>().TechnologyDatabase.TryGetValue("TechnologyDefinitionShip", out constructibleElement) && base.AIEntity.Empire.GetAgency <DepartmentOfScience>().GetTechnologyState(constructibleElement) == DepartmentOfScience.ConstructibleElement.State.Available)
     {
         bool flag = false;
         using (IEnumerator <City> enumerator = this.departmentOfTheInterior.Cities.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 for (int i = 0; i < enumerator.Current.Region.Borders.Length; i++)
                 {
                     if (this.worldPositionningService.GetRegion(enumerator.Current.Region.Borders[i].NeighbourRegionIndex).IsOcean)
                     {
                         flag = true;
                         break;
                     }
                 }
             }
         }
         if (flag)
         {
             if (!DepartmentOfScience.CanBuyoutResearch(base.AIEntity.Empire))
             {
                 OrderQueueResearch order = new OrderQueueResearch(base.AIEntity.Empire.Index, constructibleElement, true);
                 base.AIEntity.Empire.PlayerControllers.AI.PostOrder(order);
                 return;
             }
             float num = -base.AIEntity.Empire.GetAgency <DepartmentOfScience>().GetBuyOutTechnologyCost(constructibleElement) * 1.05f;
             if (base.AIEntity.Empire.GetAgency <DepartmentOfTheTreasury>().IsTransferOfResourcePossible(base.AIEntity.Empire, DepartmentOfTheTreasury.Resources.TechnologiesBuyOut, ref num))
             {
                 OrderBuyOutTechnology order2 = new OrderBuyOutTechnology(base.AIEntity.Empire.Index, "TechnologyDefinitionShip");
                 Ticket ticket;
                 base.AIEntity.Empire.PlayerControllers.AI.PostOrder(order2, out ticket, null);
             }
         }
     }
 }