Пример #1
0
        private TroopUpgradeTag GetPrevLevel(TroopUpgradeTag tag)
        {
            if (tag.IsMaxLevel && tag.Troop.PlayerFacing)
            {
                return(tag);
            }
            IDeployableVO deployableVO = null;

            if (tag.Troop is SpecialAttackTypeVO)
            {
                deployableVO = Service.StarshipUpgradeCatalog.GetPrevLevel(tag.Troop as SpecialAttackTypeVO);
            }
            else if (tag.Troop is TroopTypeVO)
            {
                deployableVO = Service.TroopUpgradeCatalog.GetPrevLevel(tag.Troop as TroopTypeVO);
            }
            string requirementText      = null;
            string shortRequirementText = null;
            bool   reqMet = Service.UnlockController.CanDeployableBeUpgraded(deployableVO, tag.Troop, out requirementText, out shortRequirementText);

            return(new TroopUpgradeTag(deployableVO, reqMet)
            {
                RequirementText = requirementText,
                ShortRequirementText = shortRequirementText
            });
        }
Пример #2
0
        protected void AddTroopItem(IUpgradeableVO troop, int troopCount, string tooltipText)
        {
            TroopUpgradeTag troopUpgradeTag = new TroopUpgradeTag(troop as IDeployableVO, true);

            this.troopList.Add(troopUpgradeTag);
            string    uid        = troop.Uid;
            UXElement item       = this.storageItemGrid.CloneTemplateItem(uid);
            UXLabel   subElement = this.storageItemGrid.GetSubElement <UXLabel>(uid, "LabelStorageCount");

            subElement.Text = LangUtils.GetMultiplierText(troopCount);
            UXSprite        subElement2 = this.storageItemGrid.GetSubElement <UXSprite>(uid, "SpriteStorageItemImageTroops");
            ProjectorConfig config      = ProjectorUtils.GenerateGeometryConfig(troop as IDeployableVO, subElement2);

            Service.EventManager.SendEvent(EventId.ButtonCreated, new GeometryTag(troop, config, Service.CurrentPlayer.ActiveArmory));
            ProjectorUtils.GenerateProjector(config);
            UXLabel subElement3 = this.storageItemGrid.GetSubElement <UXLabel>(uid, "LabelTroopLevel");

            subElement3.Text = LangUtils.GetLevelText(troop.Lvl);
            UXElement subElement4 = this.storageItemGrid.GetSubElement <UXElement>(uid, "BtnRequestTroops");

            subElement4.Visible = false;
            UXButton subElement5 = this.storageItemGrid.GetSubElement <UXButton>(uid, "StorageItemsCard");

            if (tooltipText != null)
            {
                this.troopTooltipHelper.RegisterButtonTooltip(subElement5, tooltipText);
            }
            else
            {
                subElement5.Tag       = troopUpgradeTag;
                subElement5.OnClicked = new UXButtonClickedDelegate(this.OnTroopItemClicked);
            }
            this.storageItemGrid.AddItem(item, troop.Order);
        }
Пример #3
0
        private void OnTroopItemClicked(UXButton button)
        {
            SmartEntity     availableTroopResearchLab = Service.BuildingLookupController.GetAvailableTroopResearchLab();
            TroopUpgradeTag troopUpgradeTag           = button.Tag as TroopUpgradeTag;
            bool            showUpgradeControls       = !string.IsNullOrEmpty(troopUpgradeTag.Troop.UpgradeShardUid);

            Service.ScreenController.AddScreen(new DeployableInfoScreen(troopUpgradeTag, this.troopList, showUpgradeControls, availableTroopResearchLab));
        }
Пример #4
0
        private void OnTroopCardClicked(UXButton button)
        {
            TroopUpgradeTag        tag  = (TroopUpgradeTag)button.Tag;
            List <TroopUpgradeTag> list = new List <TroopUpgradeTag>();

            for (int i = 0; i < this.troopGrid.Count; i++)
            {
                if (this.troopGrid.GetItem(i).Tag != null)
                {
                    list.Add(this.GetPrevLevel(this.troopGrid.GetItem(i).Tag as TroopUpgradeTag));
                }
            }
            list.Sort(new Comparison <TroopUpgradeTag>(this.CompareTagBySortOrder));
            Service.ScreenController.AddScreen(new DeployableInfoScreen(this.GetPrevLevel(tag), list, true, this.selectedBuilding));
        }
Пример #5
0
        public static void HandleCrateSupplyRewardClicked(CrateSupplyVO crateSupply)
        {
            IDataController dataController = Service.Get <IDataController>();
            DeployableShardUnlockController deployableShardUnlockController = Service.Get <DeployableShardUnlockController>();
            IDeployableVO deployableVO = null;
            EquipmentVO   equipmentVO  = null;

            switch (crateSupply.Type)
            {
            case SupplyType.Shard:
                equipmentVO = ArmoryUtils.GetCurrentEquipmentDataByID(crateSupply.RewardUid);
                break;

            case SupplyType.Troop:
            case SupplyType.Hero:
                deployableVO = dataController.Get <TroopTypeVO>(crateSupply.RewardUid);
                break;

            case SupplyType.SpecialAttack:
                deployableVO = dataController.Get <SpecialAttackTypeVO>(crateSupply.RewardUid);
                break;

            case SupplyType.ShardTroop:
            case SupplyType.ShardSpecialAttack:
            {
                ShardVO shard = dataController.Get <ShardVO>(crateSupply.RewardUid);
                deployableVO = deployableShardUnlockController.GetDeployableVOFromShard(shard);
                break;
            }
            }
            Entity availableTroopResearchLab = Service.Get <BuildingLookupController>().GetAvailableTroopResearchLab();

            if (deployableVO != null)
            {
                Service.Get <EventManager>().SendEvent(EventId.LootTableUnitInfoTapped, deployableVO.Uid);
                TroopUpgradeTag      troopUpgradeTag     = new TroopUpgradeTag(deployableVO, true);
                bool                 showUpgradeControls = !string.IsNullOrEmpty(troopUpgradeTag.Troop.UpgradeShardUid);
                DeployableInfoScreen screen = new DeployableInfoScreen(troopUpgradeTag, null, showUpgradeControls, availableTroopResearchLab);
                Service.Get <ScreenController>().AddScreen(screen);
                return;
            }
            if (equipmentVO != null)
            {
                EquipmentInfoScreen screen2 = new EquipmentInfoScreen(equipmentVO, null, availableTroopResearchLab, true);
                Service.Get <ScreenController>().AddScreen(screen2);
            }
        }
Пример #6
0
        private void OnInfoButtonClicked(UXButton button)
        {
            PrizeInventoryItemTag prizeInventoryItemTag = button.Tag as PrizeInventoryItemTag;
            IUpgradeableVO        finalUnitFromPrize    = TimedEventPrizeUtils.GetFinalUnitFromPrize(prizeInventoryItemTag.PrizeType, prizeInventoryItemTag.PrizeID);

            if (finalUnitFromPrize != null)
            {
                SmartEntity     availableTroopResearchLab = Service.BuildingLookupController.GetAvailableTroopResearchLab();
                TroopUpgradeTag troopUpgradeTag           = new TroopUpgradeTag(finalUnitFromPrize as IDeployableVO, true);
                bool            showUpgradeControls       = !string.IsNullOrEmpty(troopUpgradeTag.Troop.UpgradeShardUid);
                Service.ScreenController.AddScreen(new DeployableInfoScreen(troopUpgradeTag, null, showUpgradeControls, availableTroopResearchLab));
            }
            else
            {
                prizeInventoryItemTag.MainElement.Visible = false;
                prizeInventoryItemTag.InfoLabel.Visible   = true;
            }
            Service.EventManager.SendEvent(EventId.InfoButtonClicked, null);
        }
Пример #7
0
        protected void AddTroopItem(IUpgradeableVO troop, int troopCount)
        {
            TroopUpgradeTag item = new TroopUpgradeTag(troop as IDeployableVO, true);

            this.troopList.Add(item);
            string    uid        = troop.Uid;
            UXElement item2      = this.storageItemGrid.CloneTemplateItem(uid);
            UXLabel   subElement = this.storageItemGrid.GetSubElement <UXLabel>(uid, "LabelDonateTroops");

            subElement.Text = LangUtils.GetMultiplierText(troopCount);
            UXSprite        subElement2     = this.storageItemGrid.GetSubElement <UXSprite>(uid, "SpriteDonateTroopsItem");
            ProjectorConfig projectorConfig = ProjectorUtils.GenerateGeometryConfig(troop as IDeployableVO, subElement2);

            projectorConfig.AnimPreference = AnimationPreference.AnimationPreferred;
            ProjectorUtils.GenerateProjector(projectorConfig);
            UXLabel subElement3 = this.storageItemGrid.GetSubElement <UXLabel>(uid, "LabelTroopLevel");

            subElement3.Text = LangUtils.GetLevelText(troop.Lvl);
            this.storageItemGrid.GetSubElement <UXSprite>(uid, "SpriteCardEmpty").Visible = false;
            this.storageItemGrid.AddItem(item2, troop.Order);
        }
Пример #8
0
        private void CreateUnlockCards <T>(List <T> deployableList) where T : IDeployableVO
        {
            this.troopListForInfoScreen = new List <TroopUpgradeTag>();
            int i     = 0;
            int count = deployableList.Count;

            while (i < count)
            {
                IDeployableVO deployableVO = deployableList[i];
                if (deployableVO is TroopTypeVO)
                {
                    int level = Service.CurrentPlayer.UnlockedLevels.Troops.GetLevel(deployableVO.UpgradeGroup);
                    deployableVO = Service.TroopUpgradeCatalog.GetByLevel(deployableVO.UpgradeGroup, level);
                }
                else
                {
                    int level2 = Service.CurrentPlayer.UnlockedLevels.Starships.GetLevel(deployableVO.UpgradeGroup);
                    deployableVO = Service.StarshipUpgradeCatalog.GetByLevel(deployableVO.UpgradeGroup, level2);
                }
                if (deployableVO.PlayerFacing)
                {
                    TroopUpgradeTag troopUpgradeTag = new TroopUpgradeTag(deployableVO, true);
                    this.troopListForInfoScreen.Add(troopUpgradeTag);
                    UXElement item       = this.unlockGrid.CloneTemplateItem(deployableVO.Uid);
                    UXButton  subElement = this.unlockGrid.GetSubElement <UXButton>(deployableVO.Uid, "BuildingUnlockCard");
                    subElement.OnClicked = new UXButtonClickedDelegate(this.OnUnlockCardClicked);
                    subElement.Tag       = troopUpgradeTag;
                    UXSprite        subElement2     = this.unlockGrid.GetSubElement <UXSprite>(deployableVO.Uid, "SpriteItemImageTroops");
                    ProjectorConfig projectorConfig = ProjectorUtils.GenerateGeometryConfig(deployableVO, subElement2);
                    projectorConfig.AnimPreference = AnimationPreference.AnimationPreferred;
                    ProjectorUtils.GenerateProjector(projectorConfig);
                    UXLabel subElement3 = this.unlockGrid.GetSubElement <UXLabel>(deployableVO.Uid, "LabelUnlockCount");
                    subElement3.Text = LangUtils.GetMultiplierText(1);
                    this.unlockGrid.AddItem(item, deployableVO.Order);
                }
                i++;
            }
        }
Пример #9
0
        private void AddUpgradeableItemToTroopGrid(IDeployableVO nextTroop, IDeployableVO currentTroop, int sortOrder)
        {
            string    uid        = nextTroop.Uid;
            UXElement uXElement  = this.troopGrid.CloneTemplateItem(uid);
            UXLabel   subElement = this.troopGrid.GetSubElement <UXLabel>(uid, "LabelTroopLevel");

            subElement.Text = LangUtils.GetLevelText(currentTroop.Lvl);
            UXElement subElement2 = this.troopGrid.GetSubElement <UXElement>(uid, "CardDefault");
            UXElement subElement3 = this.troopGrid.GetSubElement <UXElement>(uid, "CardQuality");
            string    text        = null;
            string    text2       = null;
            bool      flag        = !nextTroop.PlayerFacing || nextTroop.Lvl == currentTroop.Lvl;
            bool      flag2;

            if (flag)
            {
                flag2 = false;
                text  = this.lang.Get("MAX_LEVEL", new object[0]);
                text2 = text;
            }
            else
            {
                flag2 = Service.UnlockController.CanDeployableBeUpgraded(currentTroop, nextTroop, out text, out text2);
            }
            this.troopGrid.GetSubElement <UXSprite>(uid, "SpriteDim").Visible             = !flag2;
            this.troopGrid.GetSubElement <UXSprite>(uid, "SpriteIconLockedTroop").Visible = (!flag2 && !flag);
            UXSprite subElement4 = this.troopGrid.GetSubElement <UXSprite>(uid, "SpriteFragmentTroop");
            bool     flag3       = !string.IsNullOrEmpty(currentTroop.UpgradeShardUid);

            if (flag3)
            {
                subElement2.Visible = false;
                subElement3.Visible = true;
                subElement4.Visible = true;
                ShardVO   shardVO            = this.dataController.Get <ShardVO>(currentTroop.UpgradeShardUid);
                int       quality            = (int)shardVO.Quality;
                string    name               = string.Format("CardQ10", quality);
                UXElement optionalSubElement = this.troopGrid.GetOptionalSubElement <UXElement>(uid, name);
                if (optionalSubElement != null)
                {
                    base.RevertToOriginalNameRecursively(optionalSubElement.Root, uid);
                    optionalSubElement.Visible = true;
                }
                UXUtils.SetupFragmentIconSprite(subElement4, quality);
                IDeployableVO troopType = currentTroop;
                if (Service.UnlockController.IsMinLevelUnlocked(currentTroop))
                {
                    troopType = nextTroop;
                }
                this.SetupTroopShardProgressBar(uid, troopType, flag);
            }
            else
            {
                subElement4.Visible = false;
                subElement2.Visible = true;
                subElement3.Visible = false;
            }
            UXLabel subElement5 = this.troopGrid.GetSubElement <UXLabel>(uid, "LabelRequirement");

            subElement5.Visible = !flag2;
            if (!flag2)
            {
                subElement5.Text = text2;
            }
            UXSlider subElement6 = this.troopGrid.GetSubElement <UXSlider>(uid, "pBarUpgradeTime");

            subElement6.Visible = false;
            UXLabel subElement7 = this.troopGrid.GetSubElement <UXLabel>(uid, "LabelpBarUpgradeTime");

            subElement7.Visible = false;
            UXSlider subElement8 = this.troopGrid.GetSubElement <UXSlider>(uid, "pBarUpgradeTimeQuality");

            subElement8.Visible = false;
            UXLabel subElement9 = this.troopGrid.GetSubElement <UXLabel>(uid, "LabelpBarUpgradeTimeQuality");

            subElement9.Visible = false;
            string text3 = "SpriteTroopItemImage";

            if (flag3)
            {
                text3 += "Quality";
            }
            UXSprite        subElement10 = this.troopGrid.GetSubElement <UXSprite>(uid, text3);
            ProjectorConfig config       = ProjectorUtils.GenerateGeometryConfig(nextTroop, subElement10, true);

            ProjectorUtils.GenerateProjector(config);
            FactionDecal.SetDeployableDecalVisibiliy(uid, this.troopGrid, false);
            TroopUpgradeTag troopUpgradeTag = new TroopUpgradeTag(nextTroop, flag2);

            troopUpgradeTag.IsMaxLevel           = flag;
            troopUpgradeTag.RequirementText      = text;
            troopUpgradeTag.ShortRequirementText = text2;
            UXButton subElement11 = this.troopGrid.GetSubElement <UXButton>(uid, "ButtonTroopItemCard");

            subElement11.Tag       = troopUpgradeTag;
            subElement11.OnClicked = new UXButtonClickedDelegate(this.OnTroopCardClicked);
            uXElement.Tag          = troopUpgradeTag;
            this.troopGrid.AddItem(uXElement, sortOrder);
        }
Пример #10
0
 private int CompareTagBySortOrder(TroopUpgradeTag a, TroopUpgradeTag b)
 {
     return(this.CompareBySortOrder(a.Troop, b.Troop));
 }
Пример #11
0
        private void UpdateContractTimers()
        {
            if (this.activeContract == null || this.contractHidden)
            {
                return;
            }
            int remainingTimeForView = this.activeContract.GetRemainingTimeForView();

            if (remainingTimeForView > 0)
            {
                UXSlider subElement;
                UXLabel  subElement2;
                if (this.activeContract.DeliveryType == DeliveryType.UpgradeEquipment)
                {
                    if (this.researchMode != TroopUpgradeScreenMode.Equipment)
                    {
                        return;
                    }
                    EquipmentVO        vo                 = this.dataController.Get <EquipmentVO>(this.activeContract.ProductUid);
                    EquipmentVO        prevLevel          = Service.EquipmentUpgradeCatalog.GetPrevLevel(vo);
                    EquipmentTabHelper equipmentTabHelper = this.filterHelper as EquipmentTabHelper;
                    if (!equipmentTabHelper.IsEquipmentValidForTab(vo, (EquipmentTab)equipmentTabHelper.CurrentTab))
                    {
                        return;
                    }
                    subElement  = this.equipmentGrid.GetSubElement <UXSlider>(prevLevel.Uid, "pBarUpgradeTimeEquipment");
                    subElement2 = this.equipmentGrid.GetSubElement <UXLabel>(prevLevel.Uid, "LabelpBarUpgradeTimeEquipment");
                    this.equipmentGrid.GetSubElement <UXLabel>(prevLevel.Uid, "LabelEquipmentName").Visible   = false;
                    this.equipmentGrid.GetSubElement <UXLabel>(prevLevel.Uid, "LabelEquipmentNumber").Visible = false;
                    this.equipmentGrid.GetSubElement <UXSlider>(prevLevel.Uid, "pBarFrag").Visible            = false;
                    this.equipmentGrid.GetSubElement <UXElement>(prevLevel.Uid, "IconUpgrade").Visible        = false;
                }
                else
                {
                    if (this.researchMode != TroopUpgradeScreenMode.Troops)
                    {
                        return;
                    }
                    UXButton optionalSubElement = this.troopGrid.GetOptionalSubElement <UXButton>(this.activeContract.ProductUid, "ButtonTroopItemCard");
                    if (optionalSubElement == null)
                    {
                        return;
                    }
                    TroopUpgradeTag troopUpgradeTag = (TroopUpgradeTag)optionalSubElement.Tag;
                    string          text            = "pBarUpgradeTime";
                    string          text2           = "LabelpBarUpgradeTime";
                    if (!string.IsNullOrEmpty(troopUpgradeTag.Troop.UpgradeShardUid))
                    {
                        text  += "Quality";
                        text2 += "Quality";
                    }
                    subElement  = this.troopGrid.GetSubElement <UXSlider>(this.activeContract.ProductUid, text);
                    subElement2 = this.troopGrid.GetSubElement <UXLabel>(this.activeContract.ProductUid, text2);
                }
                subElement.Value = 1f - (float)remainingTimeForView / (float)this.activeContract.TotalTime;
                if (!subElement.Visible)
                {
                    subElement.Visible = true;
                }
                subElement2.Text = GameUtils.GetTimeLabelFromSeconds(remainingTimeForView);
                if (!subElement2.Visible)
                {
                    subElement2.Visible = true;
                }
            }
            else
            {
                this.activeContract = null;
                this.DisableTimers();
                this.RefreshGrids();
            }
        }