public static bool IsValidRewardItem(CrateFlyoutItemVO crateFlyoutItemVO, PlanetVO currentPlanetVO, int currentHqLevel) { if (crateFlyoutItemVO == null) { return(false); } int minHQ = crateFlyoutItemVO.MinHQ; int maxHQ = crateFlyoutItemVO.MaxHQ; if ((minHQ > 0 && currentHqLevel < minHQ) || (maxHQ > 0 && currentHqLevel > maxHQ)) { return(false); } string[] planetIds = crateFlyoutItemVO.PlanetIds; if (currentPlanetVO != null && planetIds != null) { bool flag = false; int i = 0; int num = planetIds.Length; while (i < num) { if (planetIds[i] == currentPlanetVO.Uid) { flag = true; break; } i++; } if (!flag) { return(false); } } return(true); }
public CrateInfoModalScreen(string crateUid, string planetID, int hqLevel) { this.selectedRowIndex = -1; base..ctor("gui_modal_crateinfo"); IDataController dataController = Service.Get <IDataController>(); this.targetCrateVO = dataController.Get <CrateVO>(crateUid); string text = null; FactionType faction = Service.Get <CurrentPlayer>().Faction; if (faction != FactionType.Empire) { if (faction == FactionType.Rebel) { text = this.targetCrateVO.RebelLEIUid; } } else { text = this.targetCrateVO.EmpireLEIUid; } if (!string.IsNullOrEmpty(text)) { this.targetLEIVO = dataController.Get <LimitedEditionItemVO>(text); } this.planetVO = dataController.GetOptional <PlanetVO>(planetID); this.hqLevel = hqLevel; this.filteredFlyoutItems = new List <CrateFlyoutItemVO>(); CurrentPlayer currentPlayer = Service.Get <CurrentPlayer>(); string[] array = (currentPlayer.Faction == FactionType.Empire) ? this.targetCrateVO.FlyoutEmpireItems : this.targetCrateVO.FlyoutRebelItems; if (array != null) { int i = 0; int num = array.Length; while (i < num) { string text2 = array[i]; CrateFlyoutItemVO optional = dataController.GetOptional <CrateFlyoutItemVO>(text2); if (optional == null) { Service.Get <StaRTSLogger>().ErrorFormat("CrateInfoModalScreen: FlyoutItemVO Uid {0} not found", new object[] { text2 }); } else { bool flag = UXUtils.IsValidRewardItem(optional, this.planetVO, hqLevel); bool flag2 = UXUtils.ShouldDisplayCrateFlyoutItem(optional, CrateFlyoutDisplayType.Flyout); if ((flag & flag2) && this.filteredFlyoutItems.Count < 4) { this.filteredFlyoutItems.Add(optional); } } i++; } } }
private void InitRewardsGrid() { this.rewardsGrid = base.GetElement <UXGrid>("GridRewardsList"); this.rewardsGrid.SetTemplateItem("TemplateRewards"); if (this.filteredFlyoutItems.Count == 0) { base.GetElement <UXElement>("PanelGroupRewardPreview").Visible = false; this.rewardsGrid.Visible = false; this.labelRewardChance.Visible = false; return; } int i = 0; int count = this.filteredFlyoutItems.Count; while (i < count) { CrateFlyoutItemVO crateFlyoutItemVO = this.filteredFlyoutItems[i]; string uid = crateFlyoutItemVO.Uid; UXElement uXElement = this.rewardsGrid.CloneTemplateItem(uid); UXLabel subElement = this.rewardsGrid.GetSubElement <UXLabel>(uid, "LabelChance"); subElement.Text = this.lang.Get(crateFlyoutItemVO.ListChanceString, new object[0]); UXLabel subElement2 = this.rewardsGrid.GetSubElement <UXLabel>(uid, "LabelRewardName"); subElement2.Text = this.lang.Get(crateFlyoutItemVO.ListDescString, new object[0]); UXElement subElement3 = this.rewardsGrid.GetSubElement <UXElement>(uid, "Group2Option"); UXSprite subElement4 = this.rewardsGrid.GetSubElement <UXSprite>(uid, "Sprite2OptionA"); UXLabel subElement5 = this.rewardsGrid.GetSubElement <UXLabel>(uid, "LabelConjunction"); UXSprite subElement6 = this.rewardsGrid.GetSubElement <UXSprite>(uid, "Sprite2OptionB"); UXSprite subElement7 = this.rewardsGrid.GetSubElement <UXSprite>(uid, "SpriteGridReward"); string[] listIcons = crateFlyoutItemVO.ListIcons; if (listIcons != null) { if (listIcons.Length == 1) { subElement7.SpriteName = listIcons[0]; subElement3.Visible = false; } else if (listIcons.Length == 2) { subElement4.SpriteName = listIcons[0]; subElement6.SpriteName = listIcons[1]; subElement5.Text = this.lang.Get("OR", new object[0]); subElement7.Visible = false; } } else { subElement3.Visible = false; subElement7.Visible = false; } this.UpdateRowHighlight(uid, false); UXButton uXButton = (UXButton)uXElement; uXButton.Tag = i; uXButton.OnClicked = new UXButtonClickedDelegate(this.OnGridItemButtonClicked); this.rewardsGrid.AddItem(uXElement, i); i++; } this.rewardsGrid.RepositionItems(); }
private void SelectRowItemAtIndex(int index) { if (this.selectedRowIndex >= 0 && this.selectedRowIndex < this.filteredFlyoutItems.Count) { CrateFlyoutItemVO crateFlyoutItemVO = this.filteredFlyoutItems[this.selectedRowIndex]; string uid = crateFlyoutItemVO.Uid; this.UpdateRowHighlight(uid, false); } CrateFlyoutItemVO crateFlyoutItemVO2 = this.filteredFlyoutItems[index]; this.UpdateRewardUI(crateFlyoutItemVO2); this.selectedRowIndex = index; }
private void SetupCrateReward(string itemUid, TournamentRewardsVO rewardGroup, UXGrid rewardGrid, UXElement rewardItem, string rewardSuffix, CrateFlyoutItemVO crateFlyoutItemVO) { IDataController dataController = Service.Get <IDataController>(); CurrentPlayer currentPlayer = Service.Get <CurrentPlayer>(); UXButton uXButton = rewardItem as UXButton; UXSprite subElement = rewardGrid.GetSubElement <UXSprite>(itemUid, "SpriteFragmentIcon" + rewardSuffix); UXUtils.HideAllQualityCards(rewardGrid, itemUid, "EquipmentItemCardQ{0}" + rewardSuffix); UXElement subElement2 = rewardGrid.GetSubElement <UXElement>(itemUid, "ParticlesTopPrize" + rewardSuffix); subElement2.Visible = false; uXButton.Enabled = false; subElement.Visible = false; CrateSupplyVO optional = dataController.GetOptional <CrateSupplyVO>(crateFlyoutItemVO.CrateSupplyUid); if (optional == null) { Service.Get <StaRTSLogger>().ErrorFormat("Could not find crate supply {0} for faction {1}", new object[] { crateFlyoutItemVO.CrateSupplyUid, currentPlayer.Faction }); return; } bool flag = crateFlyoutItemVO.TournamentTierDisplay3D && optional.Type != SupplyType.Currency && optional.Type != SupplyType.Invalid; int num = currentPlayer.Map.FindHighestHqLevel(); UXSprite subElement3 = rewardGrid.GetSubElement <UXSprite>(itemUid, "SpriteReward2D" + rewardSuffix); subElement3.Visible = false; if (flag) { IGeometryVO iconVOFromCrateSupply = GameUtils.GetIconVOFromCrateSupply(optional, num); if (iconVOFromCrateSupply != null) { UXSprite subElement4 = rewardGrid.GetSubElement <UXSprite>(itemUid, "SpriteEquipmentItemImage" + rewardSuffix); ProjectorConfig projectorConfig = ProjectorUtils.GenerateGeometryConfig(iconVOFromCrateSupply, subElement4, true); projectorConfig.AnimPreference = AnimationPreference.AnimationPreferred; ProjectorUtils.GenerateProjector(projectorConfig); if (rewardGroup.TournamentTier == this.tiers[0].Uid) { this.particleElements.Add(subElement2.Root.name); } } else { Service.Get <StaRTSLogger>().ErrorFormat("Could not generate geometry for crate supply {0}", new object[] { optional.Uid }); } uXButton.Tag = optional; uXButton.OnClicked = new UXButtonClickedDelegate(this.OnGuaranteedRewardClicked); uXButton.Enabled = true; } else { subElement3.Visible = true; int num2 = crateFlyoutItemVO.ListIcons.Length - 1; subElement3.SpriteName = crateFlyoutItemVO.ListIcons[num2]; rewardGrid.GetSubElement <UXElement>(itemUid, "SpriteEquipmentGradient" + rewardSuffix).Visible = false; rewardGrid.GetSubElement <UXElement>(itemUid, "SpriteEquipmentGradientBottom" + rewardSuffix).Visible = false; rewardGrid.GetSubElement <UXElement>(itemUid, "SpriteEquipmentImageBkg" + rewardSuffix).Visible = false; rewardGrid.GetSubElement <UXElement>(itemUid, "SpriteFrameHover" + rewardSuffix).Visible = false; } UXLabel subElement5 = rewardGrid.GetSubElement <UXLabel>(itemUid, "LabelPrizeCount" + rewardSuffix); int rewardAmount = Service.Get <InventoryCrateRewardController>().GetRewardAmount(optional, num); int num3 = rewardGroup.CrateRewardIds.Length; string text = this.lang.ThousandsSeparated(rewardAmount * num3); string quantityString = crateFlyoutItemVO.QuantityString; if (!string.IsNullOrEmpty(quantityString)) { subElement5.Text = this.lang.Get(quantityString, new object[] { text }); } else if (rewardAmount > 0) { subElement5.Text = this.lang.Get("CONFLICT_PRIZE_CRATE_MULTIPLIER", new object[] { text }); } else { subElement5.Visible = false; } int num4 = -1; bool visible = false; if (optional.Type == SupplyType.ShardSpecialAttack || optional.Type == SupplyType.ShardTroop) { ShardVO optional2 = dataController.GetOptional <ShardVO>(optional.RewardUid); if (optional2 != null) { num4 = (int)optional2.Quality; } } else if (optional.Type == SupplyType.Shard) { EquipmentVO currentEquipmentDataByID = ArmoryUtils.GetCurrentEquipmentDataByID(optional.RewardUid); if (currentEquipmentDataByID != null) { num4 = (int)currentEquipmentDataByID.Quality; visible = true; } } else if (optional.Type == SupplyType.Troop || optional.Type == SupplyType.Hero || optional.Type == SupplyType.SpecialAttack) { num4 = Service.Get <DeployableShardUnlockController>().GetUpgradeQualityForDeployableUID(optional.RewardUid); } if (num4 > 0 & flag) { subElement.Visible = true; subElement.SpriteName = string.Format("icoDataFragQ{0}", new object[] { num4 }); string text2 = string.Format("SpriteEquipmentImageBkgGridQ{0}", new object[] { num4 }); rewardGrid.GetSubElement <UXElement>(itemUid, text2 + rewardSuffix).Visible = visible; UXUtils.SetCardQuality(this, rewardGrid, itemUid, num4, "EquipmentItemCardQ{0}" + rewardSuffix); } }
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 bool ShouldDisplayCrateFlyoutItem(CrateFlyoutItemVO flyoutVO, CrateFlyoutDisplayType displayType) { return(flyoutVO != null && (flyoutVO.ShowParams == null || flyoutVO.ShowParams.Count < 1 || flyoutVO.ShowParams.Contains(displayType))); }