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 }); }
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); }
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)); }
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)); }
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); } }
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); }
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); }
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++; } }
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); }
private int CompareTagBySortOrder(TroopUpgradeTag a, TroopUpgradeTag b) { return(this.CompareBySortOrder(a.Troop, b.Troop)); }
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(); } }