少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-13 eda22bcd9683f3a94e0744da60d23808272c627f
System/Rune/RuneComposeModel.cs
@@ -1,154 +1,154 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
namespace Snxxz.UI
{
    public class RuneComposeModel : Model, IPlayerLoginOk
    {
        public override void Init()
        {
            presentSelectRuneQuality = 0;
            presentSelectComposeRune = -1;
            ParseConfig();
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            runeModel.OnRefreshRuneTowerLv += OnRefreshRune;
            runeModel.OnRefreshRunePack += OnRefreshRune;
            runeModel.OnRefreshRuneHole += OnRefreshRune;
            foreach (var _key in runeComposeDict.Keys)
            {
                var _redpointTypeKey = 10803 * 100 + _key;
                m_RuneComposeTypeRedpoints.Add(_key, new Redpoint(10803, _redpointTypeKey));
                var _list = runeComposeDict[_key];
                List<Redpoint> redpoints = new List<Redpoint>();
                m_RuneComposeRedpoints.Add(_key, redpoints);
                for (int i = 0; i < _list.Count; i++)
                {
                    redpoints.Add(new Redpoint(_redpointTypeKey, _redpointTypeKey * 100 + i));
                }
            }
        }
        public override void UnInit()
        {
        }
        public void OnPlayerLoginOk()
        {
            UpdateRedpoint();
        }
        RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
        #region 配置
        public Dictionary<int, List<RuneComposeConfig>> runeComposeDict = new Dictionary<int, List<RuneComposeConfig>>();
        public RuneComposeConfig GetRuneCompose(int _itemColor, int _index)
        {
            if (runeComposeDict.ContainsKey(_itemColor))
            {
                if (_index >= 0 && _index < runeComposeDict[_itemColor].Count)
                {
                    return runeComposeDict[_itemColor][_index];
                }
            }
            return null;
        }
        public List<int> m_RuneBothPropertys = new List<int>();
        void ParseConfig()
        {
            var allConfigs = ConfigManager.Instance.GetAllValues<RuneComposeConfig>();
            foreach (var _cfg in allConfigs)
            {
                ItemConfig _itemCfg = ConfigManager.Instance.GetTemplate<ItemConfig>(_cfg.TagItemID);
                if (_itemCfg != null)
                {
                    List<RuneComposeConfig> _list = null;
                    if (runeComposeDict.TryGetValue(_itemCfg.ItemColor, out _list) == false)
                    {
                        _list = new List<RuneComposeConfig>();
                        runeComposeDict.Add(_itemCfg.ItemColor, _list);
                    }
                    _list.Add(_cfg);
                }
            }
            var configs = ConfigManager.Instance.GetAllValues<RuneConfig>();
            foreach (var _cfg in configs)
            {
                if (_cfg.AttrType.Length > 1)
                {
                    m_RuneBothPropertys.Add(_cfg.ID);
                }
            }
        }
        #endregion
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
        {
            if (refreshType == PlayerDataRefresh.MagicEssence)
            {
                UpdateRedpoint();
            }
        }
        private void OnRefreshRune()
        {
            UpdateRedpoint();
        }
        public int presentSelectRuneQuality { get; set; }
        public int presentSelectComposeRune { get; set; }
        #region 红点
        private Redpoint m_RuneComposeRedpoint = new Redpoint(108, 10803);
        private Dictionary<int, Redpoint> m_RuneComposeTypeRedpoints = new Dictionary<int, Redpoint>();
        private Dictionary<int, List<Redpoint>> m_RuneComposeRedpoints = new Dictionary<int, List<Redpoint>>();
        void UpdateRedpoint()
        {
            foreach (var _key in m_RuneComposeRedpoints.Keys)
            {
                var _list = m_RuneComposeRedpoints[_key];
                for (int i = 0; i < _list.Count; i++)
                {
                    _list[i].state = RedPointState.None;
                }
            }
            foreach (var _key in runeComposeDict.Keys)
            {
                var _list = runeComposeDict[_key];
                for (int i = 0; i < _list.Count; i++)
                {
                    var _runeConfig = ConfigManager.Instance.GetTemplate<RuneConfig>(_list[i].TagItemID);
                    if (runeModel.RuneTowerOpenLV < _runeConfig.TowerID)
                    {
                        continue;
                    }
                    var _runeComposeConfig = ConfigManager.Instance.GetTemplate<RuneComposeConfig>(_list[i].TagItemID);
                    RuneData _data;
                    var count1 = runeModel.GetMaxLevelRuneCnt(_runeComposeConfig.NeedItem[0], out _data);
                    var count2 = runeModel.GetMaxLevelRuneCnt(_runeComposeConfig.NeedItem[1], out _data);
                    var magicEssence = PlayerDatas.Instance.extersion.magicEssence;
                    if (count1 > 0 && count2 > 0 && magicEssence >= _runeComposeConfig.NeedMJ)
                    {
                        m_RuneComposeRedpoints[_key][i].state = RedPointState.Simple;
                    }
                }
            }
        }
        public Redpoint GetRedpoint(int _quality)
        {
            if (m_RuneComposeTypeRedpoints.ContainsKey(_quality))
            {
                return m_RuneComposeTypeRedpoints[_quality];
            }
            return null;
        }
        #endregion
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
namespace Snxxz.UI
{
    public class RuneComposeModel : Model, IPlayerLoginOk
    {
        public override void Init()
        {
            presentSelectRuneQuality = 0;
            presentSelectComposeRune = -1;
            ParseConfig();
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
            runeModel.OnRefreshRuneTowerLv += OnRefreshRune;
            runeModel.OnRefreshRunePack += OnRefreshRune;
            runeModel.OnRefreshRuneHole += OnRefreshRune;
            foreach (var _key in runeComposeDict.Keys)
            {
                var _redpointTypeKey = 10803 * 100 + _key;
                m_RuneComposeTypeRedpoints.Add(_key, new Redpoint(10803, _redpointTypeKey));
                var _list = runeComposeDict[_key];
                List<Redpoint> redpoints = new List<Redpoint>();
                m_RuneComposeRedpoints.Add(_key, redpoints);
                for (int i = 0; i < _list.Count; i++)
                {
                    redpoints.Add(new Redpoint(_redpointTypeKey, _redpointTypeKey * 100 + i));
                }
            }
        }
        public override void UnInit()
        {
        }
        public void OnPlayerLoginOk()
        {
            UpdateRedpoint();
        }
        RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
        #region 配置
        public Dictionary<int, List<RuneComposeConfig>> runeComposeDict = new Dictionary<int, List<RuneComposeConfig>>();
        public RuneComposeConfig GetRuneCompose(int _itemColor, int _index)
        {
            if (runeComposeDict.ContainsKey(_itemColor))
            {
                if (_index >= 0 && _index < runeComposeDict[_itemColor].Count)
                {
                    return runeComposeDict[_itemColor][_index];
                }
            }
            return null;
        }
        public List<int> m_RuneBothPropertys = new List<int>();
        void ParseConfig()
        {
            var allConfigs = ConfigManager.Instance.GetAllValues<RuneComposeConfig>();
            foreach (var _cfg in allConfigs)
            {
                ItemConfig _itemCfg = ConfigManager.Instance.GetTemplate<ItemConfig>(_cfg.TagItemID);
                if (_itemCfg != null)
                {
                    List<RuneComposeConfig> _list = null;
                    if (runeComposeDict.TryGetValue(_itemCfg.ItemColor, out _list) == false)
                    {
                        _list = new List<RuneComposeConfig>();
                        runeComposeDict.Add(_itemCfg.ItemColor, _list);
                    }
                    _list.Add(_cfg);
                }
            }
            var configs = ConfigManager.Instance.GetAllValues<RuneConfig>();
            foreach (var _cfg in configs)
            {
                if (_cfg.AttrType.Length > 1)
                {
                    m_RuneBothPropertys.Add(_cfg.ID);
                }
            }
        }
        #endregion
        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
        {
            if (refreshType == PlayerDataRefresh.MagicEssence)
            {
                UpdateRedpoint();
            }
        }
        private void OnRefreshRune()
        {
            UpdateRedpoint();
        }
        public int presentSelectRuneQuality { get; set; }
        public int presentSelectComposeRune { get; set; }
        #region 红点
        private Redpoint m_RuneComposeRedpoint = new Redpoint(108, 10803);
        private Dictionary<int, Redpoint> m_RuneComposeTypeRedpoints = new Dictionary<int, Redpoint>();
        private Dictionary<int, List<Redpoint>> m_RuneComposeRedpoints = new Dictionary<int, List<Redpoint>>();
        void UpdateRedpoint()
        {
            foreach (var _key in m_RuneComposeRedpoints.Keys)
            {
                var _list = m_RuneComposeRedpoints[_key];
                for (int i = 0; i < _list.Count; i++)
                {
                    _list[i].state = RedPointState.None;
                }
            }
            foreach (var _key in runeComposeDict.Keys)
            {
                var _list = runeComposeDict[_key];
                for (int i = 0; i < _list.Count; i++)
                {
                    var _runeConfig = ConfigManager.Instance.GetTemplate<RuneConfig>(_list[i].TagItemID);
                    if (runeModel.RuneTowerOpenLV < _runeConfig.TowerID)
                    {
                        continue;
                    }
                    var _runeComposeConfig = ConfigManager.Instance.GetTemplate<RuneComposeConfig>(_list[i].TagItemID);
                    RuneData _data;
                    var count1 = runeModel.GetMaxLevelRuneCnt(_runeComposeConfig.NeedItem[0], out _data);
                    var count2 = runeModel.GetMaxLevelRuneCnt(_runeComposeConfig.NeedItem[1], out _data);
                    var magicEssence = PlayerDatas.Instance.extersion.magicEssence;
                    if (count1 > 0 && count2 > 0 && magicEssence >= _runeComposeConfig.NeedMJ)
                    {
                        m_RuneComposeRedpoints[_key][i].state = RedPointState.Simple;
                    }
                }
            }
        }
        public Redpoint GetRedpoint(int _quality)
        {
            if (m_RuneComposeTypeRedpoints.ContainsKey(_quality))
            {
                return m_RuneComposeTypeRedpoints[_quality];
            }
            return null;
        }
        #endregion
    }
}