using vnxbqy.UI; using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MergeServerFlashRushToBuyWin : ILWindow { ScrollerController saleTimeCtrl; ScrollerController saleItemCtrl; Text opreationTimeText; Text moneyNumText; Transform activityOpenObj; Transform activityCloseObj; StoreModel storeModel { get { return ModelCenter.Instance.GetModelEx(); } } MergeServerFlashRushToBuyModel rushToBuyModel = MergeServerFlashRushToBuyModel.Instance; OperationFlashRushToBuy operation = null; #region Built-in protected override void BindController() { saleTimeCtrl = proxy.GetWidgtEx("FalshSaleTimeCtrl"); saleItemCtrl = proxy.GetWidgtEx("Container_FlashSales"); opreationTimeText = proxy.GetWidgtEx("Text_OperationTime"); moneyNumText = proxy.GetWidgtEx("Txt_MoneyValue1"); activityOpenObj = proxy.GetWidgtEx("ActivityOpen"); activityCloseObj = proxy.GetWidgtEx("ActivityClose"); } protected override void AddListeners() { } protected override void OnPreOpen() { rushToBuyModel.SetDefaultSelectSaleTime(); OperationTimeHepler.Instance.operationStartEvent += OperationStartEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent; rushToBuyModel.UpdateSelectSaleTimeEvent += UpdateSelectSaleTime; rushToBuyModel.UpdatePresentFlashShopCloseEvent += UpdatePresentFlashShopClose; storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; saleTimeCtrl.OnRefreshCell += OnRefreshTimeCell; saleItemCtrl.OnRefreshCell += OnRefreshItemCell; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; rushToBuyModel.UpdateAllAppointmentEvent += UpdateItemCell; SetDisplayModel(); } protected override void OnAfterOpen() { Display(); rushToBuyModel.SetDayRemind(); CreateSaleItem(); } protected override void OnPreClose() { rushToBuyModel.UpdatePresentFlashShopCloseEvent -= UpdatePresentFlashShopClose; rushToBuyModel.UpdateSelectSaleTimeEvent -= UpdateSelectSaleTime; OperationTimeHepler.Instance.operationStartEvent -= OperationStartEvent; OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent; storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent; saleTimeCtrl.OnRefreshCell -= OnRefreshTimeCell; saleItemCtrl.OnRefreshCell -= OnRefreshItemCell; rushToBuyModel.UpdateAllAppointmentEvent -= UpdateItemCell; rushToBuyModel.ResetFlashShop(); } #endregion void OnSecondEvent() { saleTimeCtrl.m_Scorller.RefreshActiveCellViews(); } void UpdateItemCell() { saleItemCtrl.m_Scorller.RefreshActiveCellViews(); } void OnRefreshTimeCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetILBehaviour(); _cell.Refresh(cell); } void OnRefreshItemCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetILBehaviour(); _cell.SetDisplayModel(cell.index); } private void SetDisplayModel() { operation = null; OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(rushToBuyModel.operationType, out operationBase)) { operation = operationBase as OperationFlashRushToBuy; } } private void Display() { if (rushToBuyModel.presentFlashShop == null || operation == null) return; opreationTimeText.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, operation.ToDisplayTime())); UpdateMoneyInfo(); activityOpenObj.SetActive(true); activityCloseObj.SetActive(false); CreateOperationTimes(); } private void RefreshBuyShopLimitEvent() { UpdateMoneyInfo(); saleItemCtrl.m_Scorller.RefreshActiveCellViews(); } private void UpdateMoneyInfo() { if (rushToBuyModel.presentFlashShop == null || operation == null) return; moneyNumText.text = UIHelper.GetMoneyCnt(1).ToString(); } private void UpdateSelectSaleTime() { CreateSaleItem(); saleTimeCtrl.m_Scorller.RefreshActiveCellViews(); } private void UpdatePresentFlashShopClose() { if (rushToBuyModel.presentFlashShop != null) { activityOpenObj.SetActive(true); activityCloseObj.SetActive(false); CreateOperationTimes(); CreateSaleItem(); } else { activityOpenObj.SetActive(false); activityCloseObj.SetActive(true); } } private void CreateOperationTimes() { if (operation == null) return; saleTimeCtrl.Refresh(); for (int i = 0; i < operation.flashShops.Count; i++) { var saleShop = operation.flashShops[i]; int seconds = 0; int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, saleShop.dayIndex, saleShop.timeIndex, out seconds); if (buyState != 1) { int index = saleShop.dayIndex * 100 + saleShop.timeIndex; saleTimeCtrl.AddCell(ScrollerDataType.Header, index); } } saleTimeCtrl.Restart(); } public void CreateSaleItem() { var flashItems = rushToBuyModel.presentFlashShop.items; saleItemCtrl.Refresh(); for (int i = 0; i < flashItems.Length; i++) { saleItemCtrl.AddCell(ScrollerDataType.Header, i); } saleItemCtrl.Restart(); //需要跳转预约 int seconds = 0; int buyState = operation.GetBuyTimeState(TimeUtility.ServerNow, rushToBuyModel.presentFlashShop.dayIndex, rushToBuyModel.presentFlashShop.timeIndex, out seconds); if (buyState == 0) { for (int i = 0; i < flashItems.Length; i++) { if (flashItems[i].isAppointment == 1) { saleItemCtrl.JumpIndex(i); break; } } } } private void OperationTimeUpdateEvent(Operation type) { if (type == Operation.FlashRushToBuy) { Display(); } } private void OperationStartEvent(Operation type, int state) { if (type == Operation.FlashRushToBuy && state == 0) { Display(); } } }