Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        public static bool CanApplyEffect(PerkEffectVO perkEffectVO, BuildingTypeVO contractBuildingVO)
        {
            string       type         = perkEffectVO.Type;
            BuildingType perkBuilding = perkEffectVO.PerkBuilding;

            return(contractBuildingVO != null && (type == "contractCost" && perkBuilding == contractBuildingVO.Type));
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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));
                }
            }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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)));
        }