private string GetDisplayValueForPerk(PerkEffectVO vo) { string type = vo.Type; string result = string.Empty; if ("troopRequestTime" == type) { result = LangUtils.FormatTime((long)vo.TroopRequestTimeDiscount); } else if ("generator" == type) { result = Mathf.FloorToInt(vo.GenerationRate * 100f).ToString(); } else if ("contractCost" == type) { result = Mathf.FloorToInt(vo.ContractDiscount * 100f).ToString(); } else if ("contractTime" == type) { result = Mathf.FloorToInt(vo.ContractTimeReduction * 100f).ToString(); } else if ("relocation" == type) { result = vo.RelocationDiscount.ToString(); } else if ("troopRequestAmount" == type) { result = vo.TroopRequestAmount.ToString(); } return(result); }
public List <ActivatedPerkData> GetPerksAppliedToBuilding(BuildingTypeVO vo) { List <ActivatedPerkData> list = new List <ActivatedPerkData>(); StaticDataController staticDataController = Service.StaticDataController; List <ActivatedPerkData> playerActivatedPerks = this.GetPlayerActivatedPerks(); int i = 0; int count = playerActivatedPerks.Count; while (i < count) { ActivatedPerkData activatedPerkData = playerActivatedPerks[i]; PerkVO perkVO = staticDataController.Get <PerkVO>(activatedPerkData.PerkId); if (activatedPerkData.EndTime > ServerTime.Time) { int j = 0; int num = perkVO.PerkEffects.Length; while (j < num) { PerkEffectVO perkEffectVO = staticDataController.Get <PerkEffectVO>(perkVO.PerkEffects[j]); bool flag = this.IsPerkEffectAppliedToBuilding(perkEffectVO, vo); if (flag) { list.Add(activatedPerkData); break; } j++; } } i++; } return(list); }
public string GetFormattedValueBasedOnEffectType(PerkEffectVO currentVO, PerkEffectVO prevVO) { Lang lang = Service.Lang; string empty = string.Empty; string displayValueForPerk = this.GetDisplayValueForPerk(currentVO); string id = currentVO.StatValueFormatStringId; if (prevVO != null) { string displayValueForPerk2 = this.GetDisplayValueForPerk(prevVO); if (displayValueForPerk2 != displayValueForPerk) { id = currentVO.StatUpgradeValueFormatStringId; return(lang.Get(id, new object[] { displayValueForPerk2, displayValueForPerk })); } } return(lang.Get(id, new object[] { displayValueForPerk })); }
private static bool CanApplyEffect(PerkEffectVO perkEffectVO) { string type = perkEffectVO.Type; BuildingType perkBuilding = perkEffectVO.PerkBuilding; return(type == "relocation" && perkBuilding == BuildingType.NavigationCenter); }
public static bool CanApplyEffect(PerkEffectVO perkEffectVO, BuildingTypeVO contractBuildingVO) { string type = perkEffectVO.Type; BuildingType perkBuilding = perkEffectVO.PerkBuilding; return(contractBuildingVO != null && (type == "contractCost" && perkBuilding == contractBuildingVO.Type)); }
private void AddPerkToGrid(ActivatedPerkData perkData) { string perkId = perkData.PerkId; PerkViewController perkViewController = Service.PerkViewController; PerkVO perkVO = Service.StaticDataController.Get <PerkVO>(perkId); UXElement uXElement = this.perksGrid.CloneTemplateItem(perkId); uXElement.Tag = perkData; UXLabel subElement = this.perksGrid.GetSubElement <UXLabel>(perkId, "LabelPerkTitleModalActivePerks"); subElement.Text = perkViewController.GetPerkNameForGroup(perkVO.PerkGroup); UXTexture subElement2 = this.perksGrid.GetSubElement <UXTexture>(perkId, "TexturePerkArtModalActivePerks"); perkViewController.SetPerkImage(subElement2, perkVO); UXLabel subElement3 = this.perksGrid.GetSubElement <UXLabel>(perkId, "LabelPerkLvlModalActivePerks"); subElement3.Text = StringUtils.GetRomanNumeral(perkVO.PerkTier); UXLabel subElement4 = this.perksGrid.GetSubElement <UXLabel>(perkId, "ItemLabelModalActivePerks"); subElement4.Visible = false; UXGrid subElement5 = this.perksGrid.GetSubElement <UXGrid>(perkId, "GridSubModalActivePerks"); subElement5.SetTemplateItem("ItemLabelModalActivePerks"); subElement5.Clear(); PerkManager perkManager = Service.PerkManager; int i = 0; int num = perkVO.PerkEffects.Length; while (i < num) { string text = perkVO.PerkEffects[i]; PerkEffectVO perkEffectVO = Service.StaticDataController.Get <PerkEffectVO>(text); UXLabel uXLabel = (UXLabel)subElement5.CloneTemplateItem(text); uXLabel.Text = this.lang.Get(perkEffectVO.StatStringId, new object[0]) + Service.PerkViewController.GetFormattedValueBasedOnEffectType(perkEffectVO, null); if (!perkManager.IsPerkEffectAppliedToBuilding(perkEffectVO, this.buildingVO)) { uXLabel.TextColor = UXUtils.COLOR_PERK_EFFECT_NOT_APPLIED; } subElement5.AddItem(uXLabel, i); i++; } this.UpdatePerkTimer(uXElement); this.perksGrid.AddItem(uXElement, 1); }
public void SetupStatGridForPerk(PerkVO targetPerkVO, UXGrid statGrid, string templateElement, string descriptionElement, string valueElement, bool useUpgrade) { Lang lang = Service.Lang; StaticDataController staticDataController = Service.StaticDataController; string[] array = null; string[] perkEffects = targetPerkVO.PerkEffects; int num = perkEffects.Length; statGrid.SetTemplateItem(templateElement); string perkGroup = targetPerkVO.PerkGroup; int perkTier = targetPerkVO.PerkTier; if (useUpgrade && perkTier > 1) { PerkVO perkByGroupAndTier = GameUtils.GetPerkByGroupAndTier(perkGroup, perkTier - 1); array = perkByGroupAndTier.PerkEffects; if (perkEffects.Length != num) { Service.Logger.Error("PerkEffects list not consistent between " + perkByGroupAndTier.Uid + " and " + targetPerkVO.Uid); } } statGrid.Clear(); for (int i = 0; i < num; i++) { PerkEffectVO perkEffectVO = staticDataController.Get <PerkEffectVO>(perkEffects[i]); PerkEffectVO prevVO = null; if (array != null) { prevVO = staticDataController.Get <PerkEffectVO>(array[i]); } string itemUid = perkEffectVO.Uid + i; UXElement item = statGrid.CloneTemplateItem(itemUid); UXLabel subElement = statGrid.GetSubElement <UXLabel>(itemUid, descriptionElement); UXLabel subElement2 = statGrid.GetSubElement <UXLabel>(itemUid, valueElement); subElement.Text = lang.Get(perkEffectVO.StatStringId, new object[0]); subElement2.Text = this.GetFormattedValueBasedOnEffectType(perkEffectVO, prevVO); statGrid.AddItem(item, i); } statGrid.RepositionItems(); }
private static void AddEffectsOfMatchingCurrencyType(PerkVO perkData, CurrencyType currencyType, uint startTime, uint endTime, ref List <CurrencyPerkEffectDataTO> matchingEffects) { if (matchingEffects == null) { Service.Get <StaRTSLogger>().Error("AddEffectsOfMatchingCurrencyType received null vo list"); return; } IDataController dataController = Service.Get <IDataController>(); string[] perkEffects = perkData.PerkEffects; int num = perkEffects.Length; for (int i = 0; i < num; i++) { PerkEffectVO perkEffectVO = dataController.Get <PerkEffectVO>(perkEffects[i]); if (perkEffectVO.Type == "generator" && perkEffectVO.Currency == currencyType) { matchingEffects.Add(new CurrencyPerkEffectDataTO(perkEffectVO.GenerationRate, startTime, endTime)); } } }
public bool IsContractCostMultiplierAppliedToBuilding(BuildingTypeVO buildingVO) { List <string> playerActivePerkEffectIds = this.GetPlayerActivePerkEffectIds(); if (playerActivePerkEffectIds != null) { StaticDataController staticDataController = Service.StaticDataController; int i = 0; int count = playerActivePerkEffectIds.Count; while (i < count) { PerkEffectVO perkEffectVO = staticDataController.Get <PerkEffectVO>(playerActivePerkEffectIds[i]); if (ContractCostPerkUtils.CanApplyEffect(perkEffectVO, buildingVO)) { return(true); } i++; } } return(false); }
public List <SmartEntity> GetBuildingsForPerk(PerkVO perkVO) { List <SmartEntity> list = new List <SmartEntity>(); string[] perkEffects = perkVO.PerkEffects; if (perkEffects != null) { StaticDataController staticDataController = Service.StaticDataController; int i = 0; int num = perkEffects.Length; while (i < num) { PerkEffectVO perkEffectVO = staticDataController.Get <PerkEffectVO>(perkEffects[i]); BuildingType perkBuilding = perkEffectVO.PerkBuilding; List <SmartEntity> buildingListByType = Service.BuildingLookupController.GetBuildingListByType(perkBuilding); list.AddRange(buildingListByType); i++; } } return(list); }
public static int GetRelocationCostDiscount(List <string> perkEffectIds) { int num = 0; if (perkEffectIds != null) { IDataController dataController = Service.Get <IDataController>(); int i = 0; int count = perkEffectIds.Count; while (i < count) { PerkEffectVO perkEffectVO = dataController.Get <PerkEffectVO>(perkEffectIds[i]); if (RelocationCostPerkUtils.CanApplyEffect(perkEffectVO)) { num += perkEffectVO.RelocationDiscount; } i++; } } return(num); }
public static float GetDiscountedCostMultiplier(BuildingTypeVO contractBuildingVO, List <string> perkEffectIds) { float num = 0f; if (perkEffectIds != null) { IDataController dataController = Service.Get <IDataController>(); int i = 0; int count = perkEffectIds.Count; while (i < count) { PerkEffectVO perkEffectVO = dataController.Get <PerkEffectVO>(perkEffectIds[i]); if (ContractCostPerkUtils.CanApplyEffect(perkEffectVO, contractBuildingVO)) { num += perkEffectVO.ContractDiscount; } i++; } } return(1f - num); }
public static float GetTimeReductionMultiplier(BuildingTypeVO contractBuildingVO, List <string> perkEffectIds) { float num = 0f; if (perkEffectIds != null) { StaticDataController staticDataController = Service.StaticDataController; int i = 0; int count = perkEffectIds.Count; while (i < count) { PerkEffectVO perkEffectVO = staticDataController.Get <PerkEffectVO>(perkEffectIds[i]); if (ContractTimePerkUtils.CanApplyEffect(perkEffectVO, contractBuildingVO)) { num += perkEffectVO.ContractTimeReduction; } i++; } } return(1f - num); }
public static int GetTroopRequestPerkTimeReduction(List <string> perkEffectIds) { int num = 0; if (perkEffectIds != null) { IDataController dataController = Service.Get <IDataController>(); int i = 0; int count = perkEffectIds.Count; while (i < count) { PerkEffectVO perkEffectVO = dataController.Get <PerkEffectVO>(perkEffectIds[i]); string type = perkEffectVO.Type; BuildingType perkBuilding = perkEffectVO.PerkBuilding; if (type == "troopRequestTime" && perkBuilding == BuildingType.Squad) { num += perkEffectVO.TroopRequestTimeDiscount; } i++; } } return(num); }
public bool IsPerkAppliedToBuilding(BuildingTypeVO vo) { List <string> playerActivePerkEffectIds = this.GetPlayerActivePerkEffectIds(); if (playerActivePerkEffectIds == null) { return(false); } StaticDataController staticDataController = Service.StaticDataController; int i = 0; int count = playerActivePerkEffectIds.Count; while (i < count) { PerkEffectVO perkEffectVO = staticDataController.Get <PerkEffectVO>(playerActivePerkEffectIds[i]); bool flag = this.IsPerkEffectAppliedToBuilding(perkEffectVO, vo); if (flag) { return(true); } i++; } return(false); }
public bool IsPerkEffectAppliedToBuilding(PerkEffectVO perkEffectVO, BuildingTypeVO vo) { BuildingType type = vo.Type; return(type == perkEffectVO.PerkBuilding && (perkEffectVO.PerkBuilding != BuildingType.Resource || (perkEffectVO.PerkBuilding == BuildingType.Resource && perkEffectVO.Currency == vo.Currency))); }