//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, February 27, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FullServiceAuctionWin : Window { #region Built-in [SerializeField] ScrollerController m_ClassifyController; [SerializeField] AuctionChildClassifyBehaviour[] m_ChildClassifys; [SerializeField] ScrollerController m_ChildClassifyController; [SerializeField] Transform m_ContainerChildClassify; [SerializeField] Transform[] m_ChildClassifyPositions; [SerializeField] ScrollerController m_AuctionController; List itemGuids = new List();//全服拍品列表 int emptyCount = 0; bool queryDirty = true; AuctionModel model { get { return ModelCenter.Instance.GetModel(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel(); } } protected override void BindController() { m_ClassifyController.OnRefreshCell += OnRefreshClassifyCell; m_ChildClassifyController.OnRefreshCell += OnRefreshChildClassifyCell; m_AuctionController.OnRefreshCell += OnRefreshGridCellItem; m_AuctionController.lockType = EnhanceLockType.KeepVertical; } protected override void AddListeners() { } protected override void OnPreOpen() { model.isAuctionWindowOpen = false; model.selectClassifyId = 0; model.childClassifyIndex = Int2.zero; queryDirty = false; GlobalTimeEvent.Instance.secondEvent += PerSecond; model.serverAuctionRefresh += FullServiceAuctionUpdate;//数据请求刷新 model.auctionItemRefresh += RefreshAuctionItemUpdate;//刷新 model.onAuctionRemove += ClearAuctionUpdate;//清除 model.myBiddingAuctionRefresh += BiddingItemInfoUpdate;//竞价物品信息刷新 model.selectClassifyRefresh += SelectClassifyRefresh; m_AuctionController.onValueChange += OnValueChange; CloseChildClassify(); ResetServerAuctionInquiry(); Display(); var index = itemGuids.IndexOf(model.locationGuid); if (index != -1) { m_AuctionController.JumpIndex(index); } model.isLocationQuery = false; model.locationGuid = string.Empty; RefreshChildClassify(); } protected override void OnActived() { base.OnActived(); StartCoroutine(Co_Open()); } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.serverAuctionRefresh -= FullServiceAuctionUpdate; model.auctionItemRefresh -= RefreshAuctionItemUpdate; model.onAuctionRemove -= ClearAuctionUpdate; model.myBiddingAuctionRefresh -= BiddingItemInfoUpdate;//竞价物品信息刷新 GlobalTimeEvent.Instance.secondEvent -= PerSecond; m_AuctionController.onValueChange -= OnValueChange; model.selectClassifyRefresh -= SelectClassifyRefresh; StopAllCoroutines(); } protected override void OnAfterClose() { } #endregion void Display() { DisplayClassifies(); DisplayAuctionItems(); } void DisplayClassifies() { var configs = AuctionConfig.GetValues(); m_ClassifyController.Refresh(); foreach (var config in configs) { m_ClassifyController.AddCell(ScrollerDataType.Header, config.Id); } m_ClassifyController.Restart(); } private void SelectClassifyRefresh() { model.childClassifyIndex = Int2.zero; CloseChildClassify(); RefreshChildClassify(); m_ClassifyController.m_Scorller.RefreshActiveCellViews(); queryDirty = true; } IEnumerator Co_Open() { yield return WaitingForSecondConst.WaitMS2000; model.isAuctionWindowOpen = true; } private void OnValueChange(Vector2 delta) { if (delta.y >= 1) { if (model.SatisfyQueryAuction(2)) { var inquiryIndex = model.GetQueryIndex(); if (itemGuids.Count > 0) { model.SendInquiryServerAcution(inquiryIndex, itemGuids[0], 2); } } } } private void PerSecond() { if (queryDirty) { queryDirty = false; ResetServerAuctionInquiry(); } } private void FullServiceAuctionUpdate() { DisplayAuctionItems(); } private void RefreshAuctionItemUpdate() { m_AuctionController.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void ClearAuctionUpdate() { DisplayAuctionItems(); } private void BiddingItemInfoUpdate() { DisplayAuctionItems(); } private void OnRefreshClassifyCell(ScrollerDataType type, CellView cell) { var classifyCell = cell as ServerAuctionClassifyCell; classifyCell.Display(cell.index); } private void OnRefreshChildClassifyCell(ScrollerDataType type, CellView cell) { var classifyId = model.selectClassifyId; var config = AuctionConfig.Get(classifyId); var index = cell.index / 100; var classifyIndex = cell.index % 100; if (config != null) { var classifyNameArray = index == 0 ? config.ChooseItemName1 : config.ChooseItemName2; Text textName = cell.transform.Find("Text").GetComponent(); Button button = cell.GetComponent