//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, March 05, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { //我的关注物品详情 public class MyFocusWin : Window { [SerializeField] ScrollerController m_ScrollerController; AuctionModel model { get { return ModelCenter.Instance.GetModel(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel(); } } List myFocusAuctionItems = new List(); int MaxFocusCount = 0; #region Built-in protected override void BindController() { m_ScrollerController.OnRefreshCell += OnRefreshGridCell; } protected override void AddListeners() { } protected override void OnPreOpen() { if (!model.alreadyQueryMyFocus) { AuctionInquiry.Instance.SendQueryAttentionAuctionItem();//查询拍卖行的关注物品 } model.alreadyQueryMyFocus = false; GetMyFocusList(); ListSotr(); OnCreateGridLineCell(m_ScrollerController); var index = myFocusAuctionItems.IndexOf(model.locationMyFocusGuid); if (index != -1 && (DateTime.Now - model.locationMyFocusTime).TotalSeconds < 5) { m_ScrollerController.JumpIndex(index); } } protected override void OnAfterOpen() { model.myFocusAuctionRefresh += ResetUpdate; model.onAuctionRemove += ResetUpdate; model.auctionItemRefresh += AuctionItemUpdate;//刷新 model.fairyAuctionRefresh += ResetUpdate; model.onFocusAuctionRefresh += AddAuctionItemInfoUpdate; model.myBiddingAuctionRefresh += ResetUpdate; } protected override void OnPreClose() { model.myFocusAuctionRefresh -= ResetUpdate; model.onAuctionRemove -= ResetUpdate; model.auctionItemRefresh -= AuctionItemUpdate;//刷新 model.fairyAuctionRefresh -= ResetUpdate; model.onFocusAuctionRefresh -= AddAuctionItemInfoUpdate; model.myBiddingAuctionRefresh -= ResetUpdate; model.locationMyFocusGuid = string.Empty; } protected override void OnAfterClose() { } #endregion private void AddAuctionItemInfoUpdate() { AuctionInquiry.Instance.SendQueryAttentionAuctionItem();//查询拍卖行的关注物品 ResetUpdate(); } private void ResetUpdate() { GetMyFocusList(); ListSotr(); OnCreateGridLineCell(m_ScrollerController); var index = myFocusAuctionItems.IndexOf(model.locationMyFocusGuid); if (index != -1 && (DateTime.Now - model.locationMyFocusTime).TotalSeconds < 5) { m_ScrollerController.JumpIndex(index); } } private void AuctionItemUpdate() { m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void OnCreateGridLineCell(ScrollerController gridCtrl) { gridCtrl.Refresh(); for (int i = 0; i < myFocusAuctionItems.Count; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell) { int index = cell.index; MyFocusCell myAuctionCell = cell.GetComponent(); myAuctionCell.GetMyFocusGUID(myFocusAuctionItems[index]); } private void GetMyFocusList() { model.GetMyFocusAutionItems(ref myFocusAuctionItems); } private void ListSotr() { myFocusAuctionItems.Sort(Compare); } int Compare(string x, string y)//数组排列 { AuctionItem lhs; AuctionItem rhs; if (model.TryGetMyFocusAuctionItem(x, out lhs) && model.TryGetMyFocusAuctionItem(y, out rhs)) { var lhs_myTopPrice = model.IsMyTopPrice(x); var rhs_myTopPrice = model.IsMyTopPrice(y); if (lhs_myTopPrice != rhs_myTopPrice) { return -lhs_myTopPrice.CompareTo(rhs_myTopPrice); } var lhs_participate = model.IsParticipateInBidding(x); var rhs_participate = model.IsParticipateInBidding(y); if (lhs_participate != rhs_participate) { return -lhs_participate.CompareTo(rhs_participate); } var lhs_needEquip = AuctionLogicUtil.IsSatisfyEquipBetterEquip(lhs); var rhs_needEquip = AuctionLogicUtil.IsSatisfyEquipBetterEquip(rhs); if (lhs_needEquip != rhs_needEquip) { return -lhs_needEquip.CompareTo(rhs_needEquip); } if (lhs.putAwayTime != rhs.putAwayTime) { return lhs.putAwayTime.CompareTo(rhs.putAwayTime); } var lhs_Config = AuctionItemConfig.Get(lhs.itemId); var rhs_Config = AuctionItemConfig.Get(rhs.itemId); if (lhs_Config.Sortpriority != rhs_Config.Sortpriority)//按照拍卖物品表排序 { return lhs_Config.Sortpriority.CompareTo(rhs_Config.Sortpriority); } } return 1; } } }