protected override void OnScreenLoaded() { if (this.selectedBuilding == null) { base.DestroyScreen(); return; } this.researchMode = TroopUpgradeScreenMode.Troops; base.GetElement <UXLabel>("LabelSelectTroop").Text = this.lang.Get("UPGRADE_UPGRADE_TROOPS", new object[0]); this.troopGrid = base.GetElement <UXGrid>("TroopCapacityGrid"); this.troopGrid.SetTemplateItem("TroopItemTemplate"); this.equipmentGrid = base.GetElement <UXGrid>("EquipmentGrid"); this.equipmentGrid.SetTemplateItem("EquipmentItemTemplate"); this.equipmentGrid.DupeOrdersAllowed = true; this.InitButtons(); this.troopTabButton = base.GetElement <UXCheckbox>("Btn1"); this.troopTabButton.OnSelected = new UXCheckboxSelectedDelegate(this.OnTroopsTabClicked); this.troopTabLabel = base.GetElement <UXLabel>("LabelBtn1"); this.troopTabLabel.Text = this.lang.Get("RESEARCH_LAB_TROOPS_TAB", new object[0]); this.equipmentTabButton = base.GetElement <UXCheckbox>("Btn2"); this.equipmentTabButton.OnSelected = new UXCheckboxSelectedDelegate(this.OnEquipmentTabClicked); this.equipmentTabLabel = base.GetElement <UXLabel>("LabelBtn2"); this.equipmentTabLabel.Text = this.lang.Get("RESEARCH_LAB_EQUIPMENT_TAB", new object[0]); this.equipmentTabButtonDim = base.GetElement <UXButton>("Btn2Dim"); this.equipmentTabButtonDim.OnClicked = new UXButtonClickedDelegate(this.OnEquipmentTabDimClicked); this.equipmentTabLabelDim = base.GetElement <UXLabel>("LabelBtn2Dim"); this.equipmentTabLabelDim.Text = this.lang.Get("RESEARCH_LAB_EQUIPMENT_TAB", new object[0]); if (ArmoryUtils.PlayerHasArmory()) { this.equipmentTabButton.Enabled = true; this.equipmentTabButton.Visible = true; this.equipmentTabButtonDim.Enabled = false; this.equipmentTabButtonDim.Visible = false; } else { this.equipmentTabButton.Enabled = false; this.equipmentTabButton.Visible = false; this.equipmentTabButtonDim.Enabled = true; this.equipmentTabButtonDim.Visible = true; } base.GetElement <UXElement>("ContainerJewel1").Visible = false; base.GetElement <UXLabel>("LabelMessage1").Text = this.lang.Get("RESEARCH_EQUIPMENT_TAB_NEW", new object[0]); ArmoryController armoryController = Service.ArmoryController; bool visible = armoryController.AllowShowEquipmentTabBadge && armoryController.DoesUserHaveAnyUpgradableEquipment(); base.GetElement <UXElement>("ContainerJewel").Visible = visible; base.GetElement <UXLabel>("LabelMessage").Text = this.lang.Get("RESEARCH_EQUIPMENT_TAB_NEW", new object[0]); EventManager eventManager = Service.EventManager; eventManager.RegisterObserver(this, EventId.ContractCompleted); eventManager.RegisterObserver(this, EventId.InventoryUnlockUpdated); this.RefreshFilterTabs(); this.RefreshGrids(); armoryController.AllowShowEquipmentTabBadge = false; Service.DeployableShardUnlockController.AllowResearchBuildingBadging = false; eventManager.SendEvent(EventId.TroopUpgradeScreenOpened, null); }
public static CrateInfoModalScreen CreateForMobileConnectorAd(string crateUid, string planetID) { BuildingLookupController buildingLookupController = Service.BuildingLookupController; Entity currentHQ = buildingLookupController.GetCurrentHQ(); BuildingTypeVO buildingType = currentHQ.Get <BuildingComponent>().BuildingType; FactionType faction = Service.CurrentPlayer.Faction; bool flag = ArmoryUtils.PlayerHasArmory(); return(new CrateInfoModalScreen(crateUid, planetID, buildingType.Lvl, faction, flag) { ModalReason = CrateInfoReason.Reason_Mobile_Connector_Ad }); }
public static CrateInfoModalScreen CreateForTargetedOffer(TargetedBundleVO offer, CrateVO crate) { BuildingLookupController buildingLookupController = Service.BuildingLookupController; Entity currentHQ = buildingLookupController.GetCurrentHQ(); BuildingTypeVO buildingType = currentHQ.Get <BuildingComponent>().BuildingType; string planetId = Service.CurrentPlayer.PlanetId; FactionType faction = Service.CurrentPlayer.Faction; bool flag = ArmoryUtils.PlayerHasArmory(); return(new CrateInfoModalScreen(crate.Uid, planetId, buildingType.Lvl, faction, flag) { ModalReason = CrateInfoReason.Reason_Targeted_Offer, CurrentOffer = offer }); }
private void SetupLockedRewardItemElements(string itemUID, PlanetLootEntryVO lootEntry) { UXSprite subElement = this.rewardsGrid.GetSubElement <UXSprite>(itemUID, "SpriteLockIcon"); UXSprite subElement2 = this.rewardsGrid.GetSubElement <UXSprite>(itemUID, "SpriteDimLock"); UXLabel subElement3 = this.rewardsGrid.GetSubElement <UXLabel>(itemUID, "LabelEquipmentRequirement"); subElement.Visible = false; subElement2.Visible = false; subElement3.Visible = false; bool flag = lootEntry.ReqArmory && !ArmoryUtils.PlayerHasArmory(); if (flag) { subElement2.Visible = true; subElement.Visible = true; subElement3.Visible = true; subElement3.Text = this.lang.Get("EQUIPMENT_ARMORY_REQUIRED", new object[0]); } }
private void AddTier(TournamentTierVO tierVO, bool isCurrent, int order, Dictionary <string, TournamentRewardsVO> tierRewardMap) { if (!tierRewardMap.ContainsKey(tierVO.Uid)) { Service.Get <StaRTSLogger>().ErrorFormat("There is no reward found for tier {0}", new object[] { tierVO.Uid }); return; } string uid = tierVO.Uid; UXElement item = this.tierGrid.CloneTemplateItem(uid); UXElement subElement = this.tierGrid.GetSubElement <UXElement>(uid, "CurrentLeague"); subElement.Visible = isCurrent; if (isCurrent && this.currentPlayerRank != null) { string id = (TimedEventUtils.GetState(this.currentTournamentVO) == TimedEventState.Live) ? "CONFLICT_CURRENT_PERCENTILE" : "CONFLICT_FINAL_PERCENTILE"; UXLabel subElement2 = this.tierGrid.GetSubElement <UXLabel>(uid, "LabelCurrentLeague"); subElement2.Text = this.lang.Get(id, new object[] { Math.Round(this.currentPlayerRank.Percentile, 2) }); } float percentage = tierVO.Percentage; UXLabel subElement3 = this.tierGrid.GetSubElement <UXLabel>(uid, "LabelRequirements"); if (percentage < 100f) { subElement3.Text = this.lang.Get("CONFLICT_TIER_REQ_PERCENTAGE", new object[] { percentage }); } else { subElement3.Text = this.lang.Get("CONFLICT_TIER_REQ_ANY", new object[0]); } UXLabel subElement4 = this.tierGrid.GetSubElement <UXLabel>(uid, "LabelLeagueLevel"); subElement4.Text = this.lang.Get(tierVO.RankName, new object[0]); if (tierVO.Division != null) { string text = this.lang.Get(tierVO.Division, new object[0]); if (!string.IsNullOrEmpty(text) && text.Trim().get_Length() != 0) { UXLabel expr_1A0 = subElement4; expr_1A0.Text = expr_1A0.Text + " - " + text; } } UXSprite subElement5 = this.tierGrid.GetSubElement <UXSprite>(uid, "SpriteLeagueIcon"); subElement5.SpriteName = Service.Get <TournamentController>().GetTierIconName(tierVO); TournamentRewardsVO tournamentRewardsVO = tierRewardMap[tierVO.Uid]; UXGrid subElement6 = this.tierGrid.GetSubElement <UXGrid>(uid, "GridRewardCards"); StringBuilder stringBuilder = new StringBuilder(" ("); stringBuilder.Append(uid); stringBuilder.Append(")"); string text2 = stringBuilder.ToString(); subElement6.SetTemplateItem("EquipmentItemCard" + text2); CrateVO optional = Service.Get <IDataController>().GetOptional <CrateVO>(tournamentRewardsVO.CrateRewardIds[0]); if (optional != null) { IDataController dataController = Service.Get <IDataController>(); List <CrateFlyoutItemVO> list = new List <CrateFlyoutItemVO>(); CurrentPlayer currentPlayer = Service.Get <CurrentPlayer>(); string[] array = (currentPlayer.Faction == FactionType.Empire) ? optional.FlyoutEmpireItems : optional.FlyoutRebelItems; if (array != null) { int i = 0; int num = array.Length; while (i < num) { string text3 = array[i]; CrateFlyoutItemVO optional2 = dataController.GetOptional <CrateFlyoutItemVO>(text3); if (optional2 == null) { Service.Get <StaRTSLogger>().ErrorFormat("CrateInfoModalScreen: FlyoutItemVO Uid {0} not found", new object[] { text3 }); } else { bool flag = UXUtils.ShouldDisplayCrateFlyoutItem(optional2, CrateFlyoutDisplayType.TournamentTier); if (flag) { PlanetVO optional3 = dataController.GetOptional <PlanetVO>(this.currentTournamentVO.PlanetId); int currentHqLevel = currentPlayer.Map.FindHighestHqLevel(); bool flag2 = UXUtils.IsValidRewardItem(optional2, optional3, currentHqLevel); if (flag2 && (!optional2.ReqArmory || ArmoryUtils.PlayerHasArmory()) && list.Count <= 5) { list.Add(optional2); string uid2 = optional2.Uid; UXElement uXElement = subElement6.CloneTemplateItem(uid2); this.SetupCrateReward(uid2, tournamentRewardsVO, subElement6, uXElement, text2, optional2); subElement6.AddItem(uXElement, i); } } } i++; } } else { Service.Get <StaRTSLogger>().ErrorFormat("There is no crate data for {0}", new object[] { tournamentRewardsVO.CrateRewardIds[0] }); } UXSprite subElement7 = subElement6.GetSubElement <UXSprite>(uid, "SpriteSupplyPrize"); RewardUtils.SetCrateIcon(subElement7, optional, AnimState.Closed); UXButton subElement8 = subElement6.GetSubElement <UXButton>(uid, "BtnConflictPrize"); subElement8.OnClicked = new UXButtonClickedDelegate(this.OnCrateClicked); subElement8.Tag = optional.Uid; UXLabel subElement9 = subElement6.GetSubElement <UXLabel>(uid, "LabelPrize"); subElement9.Text = this.lang.Get("CONFLICT_PRIZE_CRATE", new object[] { LangUtils.GetCrateDisplayName(optional) }); UXLabel subElement10 = subElement6.GetSubElement <UXLabel>(uid, "LabelPrizeNumber"); if (tournamentRewardsVO.CrateRewardIds.Length > 1) { subElement10.Text = this.lang.Get("CONFLICT_PRIZE_CRATE_MULTIPLIER", new object[] { tournamentRewardsVO.CrateRewardIds.Length }); } else { subElement10.Visible = false; subElement6.GetSubElement <UXElement>(uid, "SpritePrizeNumberShadow").Visible = false; } } this.tierGrid.AddItem(item, order); }
private void UpdateRewardUI(CrateFlyoutItemVO crateFlyoutItemVO) { IDataController dataController = Service.Get <IDataController>(); InventoryCrateRewardController inventoryCrateRewardController = Service.Get <InventoryCrateRewardController>(); string crateSupplyUid = crateFlyoutItemVO.CrateSupplyUid; CrateSupplyVO optional = dataController.GetOptional <CrateSupplyVO>(crateSupplyUid); if (optional != null) { base.GetElement <UXElement>("RewardItemDefault").Visible = false; for (int i = 1; i <= 3; i++) { base.GetElement <UXElement>(string.Format("RewardItemCardQ{0}", new object[] { i })).Visible = false; } if (optional.Type == SupplyType.ShardTroop || optional.Type == SupplyType.ShardSpecialAttack) { ShardVO optional2 = Service.Get <IDataController>().GetOptional <ShardVO>(optional.RewardUid); int quality = (int)optional2.Quality; base.GetElement <UXElement>(string.Format("RewardItemCardQ{0}", new object[] { quality })).Visible = true; base.GetElement <UXElement>(string.Format("SpriteTroopImageBkgGridQ{0}", new object[] { quality })).Visible = false; } else if (optional.Type == SupplyType.Shard) { EquipmentVO currentEquipmentDataByID = ArmoryUtils.GetCurrentEquipmentDataByID(optional.RewardUid); int quality2 = (int)currentEquipmentDataByID.Quality; base.GetElement <UXElement>(string.Format("RewardItemCardQ{0}", new object[] { quality2 })).Visible = true; base.GetElement <UXElement>(string.Format("SpriteTroopImageBkgGridQ{0}", new object[] { quality2 })).Visible = true; } else if (optional.Type == SupplyType.Troop || optional.Type == SupplyType.Hero || optional.Type == SupplyType.SpecialAttack) { int upgradeQualityForDeployableUID = Service.Get <DeployableShardUnlockController>().GetUpgradeQualityForDeployableUID(optional.RewardUid); if (upgradeQualityForDeployableUID > 0) { base.GetElement <UXElement>(string.Format("RewardItemCardQ{0}", new object[] { upgradeQualityForDeployableUID })).Visible = true; base.GetElement <UXElement>(string.Format("SpriteTroopImageBkgGridQ{0}", new object[] { upgradeQualityForDeployableUID })).Visible = false; } } else { base.GetElement <UXElement>("RewardItemDefault").Visible = true; } IGeometryVO iconVOFromCrateSupply = GameUtils.GetIconVOFromCrateSupply(optional, this.hqLevel); if (iconVOFromCrateSupply != null) { ProjectorConfig projectorConfig = ProjectorUtils.GenerateGeometryConfig(iconVOFromCrateSupply, this.spriteRewardImage, true); projectorConfig.AnimPreference = AnimationPreference.AnimationPreferred; ProjectorUtils.GenerateProjector(projectorConfig); } else { Service.Get <StaRTSLogger>().ErrorFormat("CrateInfoModalScreen: Could not generate geometry for crate supply {0}", new object[] { optional.Uid }); } this.labelRewardChance.Text = this.lang.Get(crateFlyoutItemVO.DetailChanceString, new object[0]); this.labelRewardName.Text = this.lang.Get(crateFlyoutItemVO.DetailDescString, new object[0]); string[] listIcons = crateFlyoutItemVO.ListIcons; if (listIcons != null && listIcons.Length != 0) { this.spriteRewardIcon.SpriteName = listIcons[listIcons.Length - 1]; } else { this.spriteRewardIcon.Visible = false; } string detailTypeStringId = crateFlyoutItemVO.DetailTypeStringId; if (!string.IsNullOrEmpty(detailTypeStringId)) { this.labelRewardType.Visible = true; string text = this.lang.Get(detailTypeStringId, new object[0]); this.labelRewardType.Text = text; } else { this.labelRewardType.Visible = false; } int rewardAmount = inventoryCrateRewardController.GetRewardAmount(optional, this.hqLevel); string text2 = this.lang.ThousandsSeparated(rewardAmount); string quantityString = crateFlyoutItemVO.QuantityString; if (!string.IsNullOrEmpty(quantityString)) { this.labelRewardAmt.Text = this.lang.Get(quantityString, new object[] { text2 }); } else if (rewardAmount > 1) { this.labelRewardAmt.Text = this.lang.Get("lcfly_quant", new object[] { text2 }); } else { this.labelRewardAmt.Visible = false; } UXSprite element = base.GetElement <UXSprite>("SpriteLockIcon"); UXSprite element2 = base.GetElement <UXSprite>("SpriteRewardDim"); UXLabel element3 = base.GetElement <UXLabel>("LabelEquipmentRequirement"); element.Visible = false; element2.Visible = false; element3.Visible = false; bool flag = crateFlyoutItemVO.ReqArmory && !ArmoryUtils.PlayerHasArmory(); if (flag) { element2.Visible = true; element.Visible = true; element3.Visible = true; element3.Text = this.lang.Get("EQUIPMENT_ARMORY_REQUIRED", new object[0]); } this.UpdateRowHighlight(crateFlyoutItemVO.Uid, true); return; } Service.Get <StaRTSLogger>().ErrorFormat("CrateInfoModalScreen: Could not find crate supply {0} for crate flyout {1}", new object[] { crateSupplyUid, crateFlyoutItemVO.Uid }); }
public static CrateInfoModalScreen CreateForInventory(CrateData crateData) { return(new CrateInfoModalScreen(crateData.CrateId, crateData.PlanetId, crateData.HQLevel, Service.CurrentPlayer.Faction, ArmoryUtils.PlayerHasArmory()) { crateData = crateData, ModalReason = CrateInfoReason.Reason_Inventory_Open }); }
public static CrateInfoModalScreen CreateForObjectiveProgressInfo(string crateUid, ObjectiveProgress progress) { return(new CrateInfoModalScreen(crateUid, progress.PlanetId, progress.HQ, Service.CurrentPlayer.Faction, ArmoryUtils.PlayerHasArmory()) { ModalReason = CrateInfoReason.Reason_Info }); }
public ShardShopViewTO GenerateViewTO(int index, CurrentPlayer player, ShardShopData data) { StaticDataController staticDataController = Service.StaticDataController; int playerHQLevel = player.Map.FindHighestHqLevel(); ShardShopViewTO shardShopViewTO = new ShardShopViewTO(); string shardSlotId = GameUtils.GetShardSlotId(index); int num = 0; foreach (int current in data.Purchases[index].Values) { num += current; } int num2 = this.adjustedOfferQuantity[index] - num; shardShopViewTO.SlotIndex = index; shardShopViewTO.SupplyVO = data.ShardOffers[shardSlotId]; shardShopViewTO.RemainingShardsForSale = num2; if (num2 > 0) { shardShopViewTO.CostOfNextShard = ShardShopController.CalculateCost(index, 1, data); shardShopViewTO.CostOfAllShards = ShardShopController.CalculateCost(index, num2, data); } shardShopViewTO.CanAffordSingle = CostUtils.HasRequiredCurrency(player, shardShopViewTO.CostOfNextShard); shardShopViewTO.CanAffordAll = CostUtils.HasRequiredCurrency(player, shardShopViewTO.CostOfAllShards); shardShopViewTO.PlayerHQLevel = playerHQLevel; shardShopViewTO.ItemName = GameUtils.GetShardShopNameWithoutQuantity(shardShopViewTO.SupplyVO, staticDataController); shardShopViewTO.Quality = GameUtils.GetShardQualityNumeric(shardShopViewTO.SupplyVO); shardShopViewTO.UpgradeShardsEarned = GameUtils.GetUpgradeShardsOwned(shardShopViewTO.SupplyVO, player); shardShopViewTO.UpgradeShardsRequired = GameUtils.GetUpgradeShardsRequired(shardShopViewTO.SupplyVO, player, staticDataController); shardShopViewTO.State = "unlocked"; SupplyType type = shardShopViewTO.SupplyVO.Type; if (this.adjustedOfferQuantity[index] < 1) { shardShopViewTO.State = "maxedOut"; } else if (num2 < 1) { shardShopViewTO.State = "soldOut"; } else if (type == SupplyType.Shard && !ArmoryUtils.PlayerHasArmory()) { shardShopViewTO.State = "requiresArmory"; } else if (type == SupplyType.ShardTroop) { ShardVO shardVO = staticDataController.Get <ShardVO>(shardShopViewTO.SupplyVO.RewardUid); TroopUpgradeCatalog troopUpgradeCatalog = Service.TroopUpgradeCatalog; TroopTypeVO byLevel = troopUpgradeCatalog.GetByLevel(shardVO.TargetGroupId, 1); if (byLevel != null && byLevel.Type == TroopType.Mercenary && !Service.BuildingLookupController.HasCantina()) { shardShopViewTO.State = "requiresCantina"; } } if (type == SupplyType.Shard) { EquipmentUpgradeCatalog equipmentUpgradeCatalog = Service.EquipmentUpgradeCatalog; EquipmentVO currentEquipmentDataByID = ArmoryUtils.GetCurrentEquipmentDataByID(shardShopViewTO.SupplyVO.RewardUid); int shards = player.GetShards(shardShopViewTO.SupplyVO.RewardUid); int shardsRequiredForNextUpgrade = ArmoryUtils.GetShardsRequiredForNextUpgrade(player, equipmentUpgradeCatalog, currentEquipmentDataByID); shardShopViewTO.Upgradeable = (shards >= shardsRequiredForNextUpgrade && shardsRequiredForNextUpgrade > 0); } else if (type == SupplyType.ShardTroop || type == SupplyType.ShardSpecialAttack) { shardShopViewTO.Upgradeable = Service.DeployableShardUnlockController.IsShardDeployableReadyToUpgrade(shardShopViewTO.SupplyVO.RewardUid); } return(shardShopViewTO); }