using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public class FairySiegeRechargeGiftActWin : Window { [SerializeField] ButtonEx btnClose; [SerializeField] ScrollerController scroller; FairySiegeHelpModel model { get { return ModelCenter.Instance.GetModel(); } } VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { btnClose.SetListener(CloseClick); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; vipModel.rechargeCountEvent += VipModel_rechargeCountEvent; storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; DisplayScroll(); } private void VipModel_rechargeCountEvent(int obj) { scroller.m_Scorller.RefreshActiveCellViews(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; vipModel.rechargeCountEvent -= VipModel_rechargeCountEvent; storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent; } protected override void OnAfterClose() { } #endregion private void RefreshBuyShopLimitEvent() { scroller.m_Scorller.RefreshActiveCellViews(); } private void DisplayScroll() { scroller.Refresh(); OperationFamilyRechargeConn act; OperationTimeHepler.Instance.TryGetOperation(FairySiegeHelpModel.operaType, out act); if (act != null) { List _list = null; StoreConfig.TryGetStoreConfigs(act.shopType, out _list); var totaleCnt = (_list == null ? 0 : _list.Count) + act.ctgIDs.Count; for (var i = 0; i < totaleCnt; i++) { scroller.AddCell(ScrollerDataType.Header, i); } } scroller.Restart(); scroller.m_Scorller.RefreshActiveCellViews(); scroller.JumpIndex(GetDefaultSelect()); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as FairySiegeRechargeGiftActCell; _cell.Display(_cell.index); } private int GetDefaultSelect() { OperationFamilyRechargeConn act; OperationTimeHepler.Instance.TryGetOperation(FairySiegeHelpModel.operaType, out act); if (act == null) return 0; List _list = null; StoreConfig.TryGetStoreConfigs(act.shopType, out _list); int storeCnt = _list == null ? 0 : _list.Count; for (int i = 0; i < storeCnt; i++) { int remainNum; storeModel.TryGetIsSellOut(_list[i], out remainNum); if (remainNum > 0) return i; } //跳过已购买 for (int i = 0; i < act.ctgIDs.Count; i++) { int ctgID = act.ctgIDs[i]; var countInfo = model.GetBuyCntInfo(ctgID); if (countInfo.x < countInfo.y) return i + storeCnt; } return 0; } } }