| | |
| | | using TableConfig; |
| | | using System; |
| | | using System.Text; |
| | | using System.Linq; |
| | | |
| | | namespace Snxxz.UI |
| | | { |
| | |
| | | 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; } |
| | |
| | | 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); |
| | |
| | | |
| | | 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; |
| | |
| | | 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)) |
| | |
| | | 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; |
| | |
| | | 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) |
| | |
| | | return i; |
| | | } |
| | | } |
| | | return RuneMaxLevel; |
| | | return maxlevel; |
| | | } |
| | | #endregion |
| | | public const int RUNE_REDPOINT_INTERVAL = 100; |
| | |
| | | { |
| | | var _data = GetHoleRune(i); |
| | | if (_data != null && RuneSplinters >= GetRuneNeedExp(_data.id, _data.lv) |
| | | && _data.lv < RuneMaxLevel) |
| | | && _data.lv < GetRuneMaxLevelByItem(_data.id)) |
| | | { |
| | | runelevelUpSorts.Add(i); |
| | | } |
| | |
| | | if (runeData != null) |
| | | { |
| | | if (RuneSplinters > GetRuneNeedExp(runeData.id, runeData.lv) |
| | | && runeData.lv < RuneMaxLevel) |
| | | && runeData.lv < GetRuneMaxLevelByItem(runeData.id)) |
| | | { |
| | | return true; |
| | | } |
| | |
| | | } |
| | | 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(); |