using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using TableConfig;
|
using UnityEngine;
|
namespace Snxxz.UI
|
{
|
[XLua.LuaCallCSharp]
|
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 = Config.Instance.GetAllValues<RuneComposeConfig>();
|
foreach (var _cfg in allConfigs)
|
{
|
ItemConfig _itemCfg = Config.Instance.Get<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 = Config.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 = Config.Instance.Get<RuneConfig>(_list[i].TagItemID);
|
if (runeModel.RuneTowerOpenLV < _runeConfig.TowerID)
|
{
|
continue;
|
}
|
var _runeComposeConfig = Config.Instance.Get<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
|
}
|
}
|
|