using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; using System.Linq; using Snxxz.UI; namespace Snxxz.UI { public class RankPanel : Window { [SerializeField] FunctionButton titleRank; [SerializeField] Text m_RankTip; [SerializeField] ScrollerController rankTypeCtrl; private List m_RankTypeCfgList; private List m_SubRankCfgList = new List(); private Dictionary m_SubRankSpread = new Dictionary(); private int sltRankType = 0; private int sltSubRank = 0; private int sltRankServerType = -1; [SerializeField] List textAttrList; [SerializeField] Text textSelfRank; [SerializeField] ScrollerController rankListCtrl; List rankList = null; FuncConfigConfig funcRankCnt; [SerializeField] Button closeBtn; private RankModel m_Model; private RankModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } private RoleParticularModel m_RoleParticularModel; private RoleParticularModel particularModel { get { return m_RoleParticularModel ?? (m_RoleParticularModel = ModelCenter.Instance.GetModel()); } } private void OnCloseClick() { Close(); } void OnRefreshRankType() { if (m_RankTypeCfgList == null) { m_RankTypeCfgList = RankListConfig.GetAllRankType().Values.ToList(); for (int i = 0; i < m_RankTypeCfgList.Count; i++) { m_SubRankSpread.Add(m_RankTypeCfgList[i].ID, false); } } rankTypeCtrl.Refresh(); m_SubRankCfgList.Clear(); for (int i = 0; i < m_RankTypeCfgList.Count; i++) { RankListConfig rank = m_RankTypeCfgList[i]; List list = RankListConfig.GetAllSubRank(rank.ID); rankTypeCtrl.AddCell(ScrollerDataType.Header, i, OnRankTypeClick); if (list != null && sltRankType == rank.ID && m_SubRankSpread[rank.ID]) { for (int j = 0; j < list.Count; j++) { rankTypeCtrl.AddCell(ScrollerDataType.Normal, list[j].ID); } m_SubRankCfgList.AddRange(list); } } rankTypeCtrl.Restart(); } private void OnRankTypeClick(CellView cell) { OnRankTypeClick(m_RankTypeCfgList[cell.index].ID); } private void OnRankTypeClick(int type) { if (type == sltRankType && RankListConfig.GetAllSubRank(type) == null) return; if (RankListConfig.GetAllSubRank(type) != null) { bool _same = sltRankType == type; if (!_same) { m_SubRankSpread[sltRankType] = !m_SubRankSpread[sltRankType]; } sltRankType = type; m_SubRankSpread[type] = !m_SubRankSpread[type]; OnRefreshRankType(); if (!_same) OnSubRankClick(RankListConfig.GetAllSubRank(type)[0]); } else { ClearSubRankSpread(); sltRankType = type; OnRefreshRankType(); string[] strs = ConfigParse.GetMultipleStr(RankListConfig.GetRankType(sltRankType).RankAtt); SetRankAttr(strs); sltRankServerType = RankListConfig.GetRankType(sltRankType).type; SendBegRank(RankListConfig.GetRankType(sltRankType)); sltSubRank = 0; } m_RankTip.text = UIHelper.ReplaceNewLine(Language.Get(StringUtility.Contact("RankTip_", sltRankType))); } private void ClearSubRankSpread() { for (int i = 0; i < m_RankTypeCfgList.Count; i++) { m_SubRankSpread[m_RankTypeCfgList[i].ID] = false; } } private void OnRefreshRankTypeCell(ScrollerDataType type, CellView cell) { switch (type) { case ScrollerDataType.Header: { RankListConfig cfg = m_RankTypeCfgList[cell.index]; if (cfg != null) { Text text = cell.transform.Find("Txt").GetComponent(); text.text = cfg.ListName; Image img = cell.GetComponent(); if (cfg.ID == sltRankType) { img.SetSprite("ListBtn_Select"); } else { img.SetSprite("ListBtn_UnSelect"); } if (RankListConfig.GetAllSubRank(cfg.ID) == null) { img = cell.transform.Find("Arrow").GetComponent(); img.gameObject.SetActive(false); } else { if (m_SubRankSpread[cfg.ID]) { img.SetSprite("ListBtn_UnSelect"); } img = cell.transform.Find("Arrow").GetComponent(); img.gameObject.SetActive(true); img.transform.localEulerAngles = m_SubRankSpread[cfg.ID] ? new Vector3(0, 0, -90) : Vector3.zero; img.SetSprite(m_SubRankSpread[cfg.ID] ? "Arrow_a" : "ArrowLight_a"); } } } break; case ScrollerDataType.Normal: { RankListConfig cfg = RankListConfig.GetSubRank(cell.index); if (cfg != null) { Text text = cell.transform.Find("Button/Text").GetComponent(); text.text = cfg.ListName; Button btn = cell.transform.Find("Button").GetComponent