少年修仙传客户端代码仓库
leonard Wu
2018-08-03 c2d2d5d3a840bf50968b3f95e304929bc62a7b70
System/Rune/RuneModel.cs
@@ -4,6 +4,7 @@
using TableConfig;
using System;
using System.Text;
using System.Linq;
namespace Snxxz.UI
{
@@ -54,6 +55,7 @@
        public Dictionary<int, float> runeAttrAdditionDic = new Dictionary<int, float>();
        public Dictionary<int, float> runeExpDic = new Dictionary<int, float>();
        public Dictionary<int, float> runeEliteAdditonDic = new Dictionary<int, float>();
        Dictionary<int, int> runeQualityMaxLevel;
        public int[] runeUnlockArray { get; private set; }
        public float runeExpAddition { get; private set; }
        public string runeExpFormula { get; private set; }
@@ -83,7 +85,12 @@
                    cfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("RunePackageNum");
                    runePackMaxNum = int.Parse(cfg.Numerical1);
                    for (int i = 1; i < RuneMaxLevel; i++)
                    var config = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("RuneMaxLV");
                    runeQualityMaxLevel = ConfigParse.GetDic<int, int>(config.Numerical1);
                    var maxlevel = runeQualityMaxLevel != null ? runeQualityMaxLevel.Values.Last() : 0;
                    for (int i = 1; i < maxlevel; i++)
                    {
                        Equation.Instance.Clear();
                        Equation.Instance.AddKeyValue(replaceValStr, i + 1);
@@ -106,6 +113,26 @@
        private static StringBuilder _textBuilder = new StringBuilder();
        static readonly string replaceValStr = "level";
        public int GetRuneMaxLevel(int _itemColor)
        {
            if (runeQualityMaxLevel != null && runeQualityMaxLevel.ContainsKey(_itemColor))
            {
                return runeQualityMaxLevel[_itemColor];
            }
            if (runeQualityMaxLevel != null)
            {
                return runeQualityMaxLevel.Values.Last();
            }
            return 0;
        }
        public int GetRuneMaxLevelByItem(int _itemId)
        {
            var config = ConfigManager.Instance.GetTemplate<ItemConfig>(_itemId);
            return config == null ? 0 : GetRuneMaxLevel(config.ItemColor);
        }
        public string GetRuneAttrStr(int id, int level)
        {
            _textBuilder.Length = 0;
@@ -172,7 +199,8 @@
        public int GetRuneNeedExp(int id, int level)
        {
            float _levelUpExp = 0;
            if (level < RuneMaxLevel)
            ItemConfig _tagChinModel = ConfigManager.Instance.GetTemplate<ItemConfig>(id);
            if (level < GetRuneMaxLevel(_tagChinModel.ItemColor))
            {
                float _result = 0;
                if (runeExpResultDict.ContainsKey(level + 1))
@@ -187,7 +215,6 @@
                    runeExpResultDict.Add(level + 1, _result);
                }
                RuneConfig cfg = ConfigManager.Instance.GetTemplate<RuneConfig>(id);
                ItemConfig _tagChinModel = ConfigManager.Instance.GetTemplate<ItemConfig>(id);
                if (cfg.AttrType.Length > 1)
                {
                    _levelUpExp = _result * runeExpDic[_tagChinModel.ItemColor] * runeExpAddition;
@@ -242,7 +269,8 @@
        public int GetRuneLevelByExp(int id, float _exp)
        {
            float _totalExp = 0;
            for (int i = 1; i < RuneMaxLevel; i++)
            var maxlevel = runeQualityMaxLevel != null ? runeQualityMaxLevel.Values.Last() : 0;
            for (int i = 1; i < maxlevel; i++)
            {
                _totalExp += GetRuneNeedExp(id, i);
                if (_totalExp > _exp)
@@ -250,7 +278,7 @@
                    return i;
                }
            }
            return RuneMaxLevel;
            return maxlevel;
        }
        #endregion
        public const int RUNE_REDPOINT_INTERVAL = 100;
@@ -353,7 +381,7 @@
            {
                var _data = GetHoleRune(i);
                if (_data != null && RuneSplinters >= GetRuneNeedExp(_data.id, _data.lv)
                       && _data.lv < RuneMaxLevel)
                       && _data.lv < GetRuneMaxLevelByItem(_data.id))
                {
                    runelevelUpSorts.Add(i);
                }
@@ -408,7 +436,7 @@
            if (runeData != null)
            {
                if (RuneSplinters > GetRuneNeedExp(runeData.id, runeData.lv)
                    && runeData.lv < RuneMaxLevel)
                    && runeData.lv < GetRuneMaxLevelByItem(runeData.id))
                {
                    return true;
                }
@@ -946,16 +974,7 @@
            }
            return Cnt;
        }
        private int rune_max_level = 0;
        public int RuneMaxLevel {
            get {
                if (rune_max_level == 0)
                {
                    rune_max_level = int.Parse(ConfigManager.Instance.GetTemplate<FuncConfigConfig>("RuneMaxLV").Numerical1);
                }
                return rune_max_level;
            }
        }
        public void ClearRuneData()
        {
            runePackData.Clear();