コード例 #1
0
 public static void GrantInstantBuildingUpgrade(RewardVO reward, CurrentPlayer cp)
 {
     for (int i = 0; i < reward.BuildingInstantUpgrades.Length; i++)
     {
         string[] array = reward.BuildingInstantUpgrades[i].Split(new char[]
         {
             ':'
         });
         int            num            = Convert.ToInt32(array[1], CultureInfo.InvariantCulture);
         string         text           = array[0];
         BuildingTypeVO buildingTypeVO = Service.Get <IDataController>().Get <BuildingTypeVO>(text);
         if (buildingTypeVO == null)
         {
             Service.Get <StaRTSLogger>().WarnFormat("buildingUiD {0} does not exist", new object[]
             {
                 text
             });
         }
         else
         {
             BuildingUpgradeCatalog  buildingUpgradeCatalog = Service.Get <BuildingUpgradeCatalog>();
             ISupportController      supportController      = Service.Get <ISupportController>();
             NodeList <BuildingNode> nodeList = Service.Get <EntityController>().GetNodeList <BuildingNode>();
             for (BuildingNode buildingNode = nodeList.Head; buildingNode != null; buildingNode = buildingNode.Next)
             {
                 BuildingTypeVO buildingType = buildingNode.BuildingComp.BuildingType;
                 if (buildingType.Lvl < num && buildingType.Type == buildingTypeVO.Type && buildingType.Type != BuildingType.Clearable)
                 {
                     BuildingTypeVO byLevel = buildingUpgradeCatalog.GetByLevel(buildingType.UpgradeGroup, num);
                     if (byLevel != null && byLevel.PlayerFacing)
                     {
                         if (!string.IsNullOrEmpty(buildingTypeVO.LinkedUnit))
                         {
                             if (ContractUtils.IsChampionRepairing(buildingNode.Entity))
                             {
                                 supportController.FinishCurrentContract(buildingNode.Entity, true);
                             }
                             if (cp.Inventory.Champion.GetItemAmount(buildingTypeVO.LinkedUnit) == 0)
                             {
                                 cp.OnChampionRepaired(buildingTypeVO.LinkedUnit);
                             }
                         }
                         supportController.StartBuildingUpgrade(byLevel, buildingNode.Entity, true);
                         int   boardX = buildingNode.Entity.Get <BoardItemComponent>().BoardItem.BoardX;
                         int   boardZ = buildingNode.Entity.Get <BoardItemComponent>().BoardItem.BoardZ;
                         float x;
                         float z;
                         EditBaseController.BuildingBoardToWorld(buildingNode.Entity, boardX, boardZ, out x, out z);
                         Vector3 worldLocation = new Vector3(x, 0f, z);
                         worldLocation.x = Units.BoardToWorldX(boardX);
                         worldLocation.z = Units.BoardToWorldX(boardZ);
                         Service.Get <WorldInitializer>().View.PanToLocation(worldLocation);
                     }
                 }
             }
         }
     }
 }
コード例 #2
0
        protected void ConfirmInstantUpgrade(object result, object cookie)
        {
            if (result == null)
            {
                return;
            }
            int num = GameUtils.CrystalCostToInstantUpgrade(this.nextBuildingInfo);

            if (!GameUtils.SpendCrystals(num))
            {
                return;
            }
            this.buttonPrimaryAction.Enabled = false;
            this.buttonInstantBuy.Enabled    = false;
            this.buttonSwap.Enabled          = false;
            this.upgradeButton.Enabled       = false;
            this.allowClose = false;
            ProcessingScreen.Show();
            int    currencyAmount = -num;
            string itemType       = this.buildingInfo.Type.ToString();
            string uid            = this.buildingInfo.Uid;
            int    itemCount      = 1;
            string type           = "instant_building";
            string subType        = "consumable";

            Service.DMOAnalyticsController.LogInAppCurrencyAction(currencyAmount, itemType, uid, itemCount, type, subType);
            EventManager eventManager = Service.EventManager;

            eventManager.RegisterObserver(this, EventId.MissionCollecting, EventPriority.Default);
            this.instantUpgradeBuildingKey = this.selectedBuilding.BuildingComp.BuildingTO.Key;
            this.instantUpgradeBuildingUid = this.nextBuildingInfo.Uid;
            try
            {
                ISupportController iSupportController = Service.ISupportController;
                iSupportController.StartBuildingUpgrade(this.nextBuildingInfo, this.selectedBuilding, true);
                iSupportController.BuyOutCurrentBuildingContract(this.selectedBuilding, false);
            }
            finally
            {
                eventManager.UnregisterObserver(this, EventId.MissionCollecting);
                this.HandleInstantUpgradeRequest();
            }
        }