//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 08, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Linq; using TableConfig; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Snxxz.UI { public class RunePackWin : Window { [SerializeField] ScrollerController packController; [SerializeField] Text runePackCap; [SerializeField] Button runePackClostBtn; [SerializeField] Button m_RuneGetBtn; [SerializeField] Button m_RuneComposeBtn; RuneModel m_Model; RuneModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { runePackClostBtn.onClick.AddListener(OnRunePackClose); m_RuneGetBtn.onClick.AddListener(OnRuneGetBtn); m_RuneComposeBtn.onClick.AddListener(OnRuneComposeBtn); } private void OnRunePackClose() { CloseClick(); } protected override void OnPreOpen() { model.OnRefreshRunePack += OnRunePackRefresh; OnRunePackRefresh(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { model.OnRefreshRunePack -= OnRunePackRefresh; } #endregion /// /// 对符文背包里进行排序 /// 1.按品质降序 /// 2.按等级降序 /// 3.按id降序 /// /// /// /// private int Compare(RuneData x, RuneData y) { ItemConfig xItemCfg = ConfigManager.Instance.GetTemplate(x.id); ItemConfig yItemCfg = ConfigManager.Instance.GetTemplate(y.id); bool xSame = model.IsSameInHoleRune(xItemCfg.ID, model.sltRuneHole); bool ySame = model.IsSameInHoleRune(yItemCfg.ID, model.sltRuneHole); if (xSame.CompareTo(ySame) != 0) return xSame.CompareTo(ySame); if (xItemCfg.ItemColor.CompareTo(yItemCfg.ItemColor) != 0) return -xItemCfg.ItemColor.CompareTo(yItemCfg.ItemColor); else if (x.lv.CompareTo(y.lv) != 0) return -x.lv.CompareTo(y.lv); else if (x.id.CompareTo(y.id) != 0) return -x.id.CompareTo(y.id); else return 1; } void OnRunePackRefresh() { packController.Refresh(); if (model.runePackList != null) { model.runePackList.Clear(); } else { model.runePackList = new List(); } List list = model.GetPackRune().Values.ToList(); for (int i = 0; i < list.Count; i++) { RuneData data = list[i]; ItemConfig cfg = ConfigManager.Instance.GetTemplate(data.id); if (cfg.Type == 30) { model.runePackList.Add(data); } } model.runePackList.Sort(Compare); int itemCnt = Mathf.CeilToInt((float)model.runePackList.Count / 3); for (int i = 0; i < itemCnt; i++) { packController.AddCell(ScrollerDataType.Normal, i); } packController.Restart(); runePackCap.text = StringUtility.Contact(model.GetPackRune().Count, "/", ConfigManager.Instance.GetTemplate("RunePackageNum").Numerical1); } private void OnRuneComposeBtn() { CloseImmediately(); model.JumpToRuneCompose(); } private void OnRuneGetBtn() { CloseImmediately(); WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.RuneTower); } } }