//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, March 01, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FamilyAuctionWin : Window { [SerializeField] ScrollerController m_ScrollerControllerItem; AuctionModel model { get { return ModelCenter.Instance.GetModel(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel(); } } List itemGuids = new List(); #region Built-in protected override void BindController() { m_ScrollerControllerItem.OnRefreshCell += OnRefreshGridCellItem; } protected override void AddListeners() { } protected override void OnPreOpen() { GetFamilyAuctionItemList(); ListSotr(); OnCreateGridCellItem(m_ScrollerControllerItem); var index = itemGuids.FindIndex((x) => { return x.Equals(model.locationGuid); }); if (index != -1) { m_ScrollerControllerItem.JumpIndex(index); } model.locationGuid = string.Empty; } protected override void OnAfterOpen() { model.fairyAuctionRefresh += FamilyAuctionReset; model.auctionItemRefresh += RefreshAuctionItemUpdate; model.myBiddingAuctionRefresh += RefreshAuctionItemUpdate; } protected override void OnPreClose() { model.fairyAuctionRefresh -= FamilyAuctionReset; model.myBiddingAuctionRefresh -= RefreshAuctionItemUpdate; model.auctionItemRefresh -= RefreshAuctionItemUpdate; } protected override void OnAfterClose() { } #endregion private void FamilyAuctionReset() { GetFamilyAuctionItemList(); ListSotr(); OnCreateGridCellItem(m_ScrollerControllerItem); } private void RefreshAuctionItemUpdate() { m_ScrollerControllerItem.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void OnCreateGridCellItem(ScrollerController gridCtrl) { gridCtrl.Refresh(); for (int i = 0; i < itemGuids.Count; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCellItem(ScrollerDataType type, CellView cell) { int index = cell.index; FamilyAuctioncell familyAuctionCell = cell.GetComponent(); familyAuctionCell.GetFamilyAuctionGUID(itemGuids[index]); } private void GetFamilyAuctionItemList() { this.itemGuids.Clear(); var itemGuids = model.GetFairyAuctionItems(); foreach (var guid in itemGuids) { AuctionItem item; if(model.TryGetFairyAuctionItem(guid,out item)) { if (item.auctionType == 1) { this.itemGuids.Add(guid); } } } } private void ListSotr() { itemGuids.Sort(Compare); } int Compare(string x, string y)//数组排列 { AuctionItem lhs; AuctionItem rhs; if (model.TryGetFairyAuctionItem(x, out lhs) && model.TryGetFairyAuctionItem(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; } } }