//--------------------------------------------------------
|
// [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<AuctionModel>(); } }
|
AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } }
|
|
List<string> itemGuids = new List<string>();
|
#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>();
|
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;
|
}
|
}
|
|
}
|