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 redpoints = new List(); 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(); } } #region 配置 public Dictionary> runeComposeDict = new Dictionary>(); 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 m_RuneBothPropertys = new List(); void ParseConfig() { var allConfigs = ConfigManager.Instance.GetAllValues(); foreach (var _cfg in allConfigs) { ItemConfig _itemCfg = ConfigManager.Instance.GetTemplate(_cfg.TagItemID); if (_itemCfg != null) { List _list = null; if (runeComposeDict.TryGetValue(_itemCfg.ItemColor, out _list) == false) { _list = new List(); runeComposeDict.Add(_itemCfg.ItemColor, _list); } _list.Add(_cfg); } } var configs = ConfigManager.Instance.GetAllValues(); 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 m_RuneComposeTypeRedpoints = new Dictionary(); private Dictionary> m_RuneComposeRedpoints = new Dictionary>(); 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(_list[i].TagItemID); if (runeModel.RuneTowerOpenLV < _runeConfig.TowerID) { continue; } var _runeComposeConfig = ConfigManager.Instance.GetTemplate(_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 } }