コード例 #1
0
        private void RefreshExp()
        {
            EquipmentInfo equipmentInfo = EquipmentStrengthenProxy.instance.StrengthenEquipInfo;

            EquipmentInfo[] materials           = EquipmentStrengthenProxy.instance.materialsEquipInfo;
            int             count               = materials.Length;
            int             totalExpProvide     = 0;
            int             selectMaterialCount = 0;

            for (int i = 0; i < count; i++)
            {
                EquipmentInfo info = materials[i];
                if (info != null)
                {
                    EquipmentStrengthenData data = EquipmentStrengthenData.GetStrengthenDataByStar(info.equipmentData.star);
                    totalExpProvide += data.exp_provide;
                    selectMaterialCount++;
                }
            }
            //current
            int curLvel = equipmentInfo.strengthenLevel;
            EquipmentStrengthenNeedData needData = EquipmentStrengthenNeedData.GetStrengthenNeedDataByLv(curLvel);
            bool isMax = (needData == null);
            //level
            EquipmentStrengthenNeedData nextData = EquipmentStrengthenNeedData.GetStrengthenNeedDataByExp(EquipmentStrengthenNeedData.GetStrengthenTotalExp(curLvel) + equipmentInfo.strengthenExp + totalExpProvide);

            _isReachMaxLevel = isMax ? true: (nextData == null ? true : false);
            int addLevel = isMax ? 0:(nextData == null ? 1 : nextData.aggr_lv - equipmentInfo.strengthenLevel);

            strengthenLevelText.text = string.Format(Localization.Get("ui.equipment_strengthen_view.strengthen_level"), equipmentInfo.strengthenLevel, addLevel);


            if (isMax)
            {
                addExpText.text           = "MAX";
                sliderCurrentExpBar.value = 0;
                sliderAddExpBar.value     = 0;
                coinText.text             = "0";
            }
            else
            {
                sliderCurrentExpBar.value = (equipmentInfo.strengthenExp + 0.0f) / needData.exp_need;
                sliderAddExpBar.value     = (equipmentInfo.strengthenExp + totalExpProvide + 0.0f) / needData.exp_need;
                float money      = GetStrengthenMoney(equipmentInfo.strengthenLevel, curLvel + addLevel, totalExpProvide);
                int   totalMoney = (int)(money * selectMaterialCount);
                coinText.text = totalMoney.ToString();
            }

            RefreshAttribute(curLvel + addLevel, isMax);
        }
コード例 #2
0
        private float GetStrengthenMoney(int curlevel, int nextLevel, int expTotal)
        {
            EquipmentInfo equipmentInfo   = EquipmentStrengthenProxy.instance.StrengthenEquipInfo;
            int           expTempTotal    = expTotal;
            float         moneyTotal      = 0;
            float         partMoney       = 0;
            int           goldNeed        = 0;
            float         addExpPercent   = 0;
            float         totalExpPercent = 0;

            if (expTotal != 0)
            {
                for (int i = curlevel; i <= nextLevel; i++)
                {
                    EquipmentStrengthenNeedData needData = EquipmentStrengthenNeedData.GetStrengthenNeedDataByLv(i);
                    if (needData == null)
                    {
                        needData = EquipmentStrengthenNeedData.LastNeedData();
                    }
                    goldNeed = needData.GetGoldNeedByStar(equipmentInfo.equipmentData.star);
                    if (i == nextLevel)
                    {
                        partMoney        = (expTempTotal + 0.0f) / expTotal * goldNeed;
                        moneyTotal      += partMoney;
                        addExpPercent    = (expTempTotal + 0.0f) / needData.exp_need;
                        totalExpPercent += addExpPercent;
                    }
                    else if (i == curlevel)
                    {
                        int exp = needData.exp_need - equipmentInfo.strengthenExp;

                        partMoney        = (exp + 0.0f) / expTotal * goldNeed;
                        moneyTotal      += partMoney;
                        expTempTotal    -= exp;
                        addExpPercent    = (exp + 0.0f) / needData.exp_need;
                        totalExpPercent += addExpPercent;
                    }
                    else
                    {
                        partMoney        = (needData.exp_need + 0.0f) / expTotal * goldNeed;
                        moneyTotal      += partMoney;
                        expTempTotal    -= needData.exp_need;
                        totalExpPercent += 1;
                    }
                }
            }
            addExpText.text = string.Format("+{0}% EXP", (int)(totalExpPercent * 100));
            return(moneyTotal);
        }