//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, December 18, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class DungeonGatherSoulVictoryWin : DungeonVictoryWin { [SerializeField] ScrollerController m_ScrollerControl; [SerializeField] RectTransform m_ContainerItems; [SerializeField] GatherSoulResultItemCell[] m_ResultItems; DungeonModel model { get { return ModelCenter.Instance.GetModel(); } } List itemList = new List(); protected override void AddListeners() { base.AddListeners(); m_ScrollerControl.OnRefreshCell += OnRefreshCell; } protected override void Display() { m_ContainerPoivt.gameObject.SetActive(true); base.RequireDungeonExit(); base.DrawPassTime(); DisplayItems(); } void DisplayItems() { itemList.Clear(); var result = model.dungeonResult; if (result.itemInfo != null) { itemList.AddRange(result.itemInfo); } itemList.Sort(Compare); m_ScrollerControl.Refresh(); m_ContainerItems.gameObject.SetActive(itemList.Count > 0 && itemList.Count <= 6); if (itemList.Count > 6) { for (int i = 0; i < itemList.Count; i++) { m_ScrollerControl.AddCell(ScrollerDataType.Header, i); } } else { for (int i = 0; i < m_ResultItems.Length; i++) { m_ResultItems[i].gameObject.SetActive(i < itemList.Count); if (i < itemList.Count) { m_ResultItems[i].Display(itemList[i].ItemID, itemList[i].Count); } } } m_ScrollerControl.Restart(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var resultCell = cell as GatherSoulResultItemCell; if (cell.index < itemList.Count) { var item = itemList[cell.index]; resultCell.Display(item.ItemID, item.Count); } } int Compare(ServerItem lhs, ServerItem rhs) { var lhsConfig = ItemConfig.Get(lhs.ItemID); var rhsConfig = ItemConfig.Get(rhs.ItemID); var lhsEssence = lhsConfig.Type == GatheringSoulModel.GATHERSOUL_ESSENCE_TYPE; var rhsEssence = rhsConfig.Type == GatheringSoulModel.GATHERSOUL_ESSENCE_TYPE; if (lhsEssence != rhsEssence) { return lhsEssence.CompareTo(rhsEssence); } if (lhsConfig.ItemColor != rhsConfig.ItemColor) { return -lhsConfig.ItemColor.CompareTo(rhsConfig.ItemColor); } var lhsCore = lhsConfig.Type == GatheringSoulModel.GATHERSOUL_CORE_TYPE; var rhsCore = rhsConfig.Type == GatheringSoulModel.GATHERSOUL_CORE_TYPE; if (lhsCore != rhsCore) { return -lhsCore.CompareTo(rhsCore); } return 0; } } }