| | |
| | | public class OpenServerGiftWin : Window
|
| | | {
|
| | | [SerializeField] RectTransform m_ContainerDisplay;
|
| | | [SerializeField] Button[] m_CloseBtns;
|
| | | [SerializeField] OSGiftBehaviour[] m_OSGifts;
|
| | | [SerializeField] RectTransform m_ContainerTime;
|
| | | [SerializeField] Text m_Overdue;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | int currentSelectId = 0;
|
| | |
|
| | | OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel<OSGiftModel>(); } }
|
| | | #region Built-in
|
| | | protected override void BindController()
|
| | |
| | |
|
| | | protected override void AddListeners()
|
| | | {
|
| | | for (int i = 0; i < m_CloseBtns.Length; i++)
|
| | | {
|
| | | m_CloseBtns[i].onClick.AddListener(OnCloseClick);
|
| | | }
|
| | | }
|
| | |
|
| | | protected override void OnPreOpen()
|
| | | {
|
| | | WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
|
| | | WindowCenter.Instance.windowAfterCloseEvent += windowAfterCloseEvent;
|
| | | model.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
|
| | | TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh;
|
| | | GlobalTimeEvent.Instance.secondEvent += SecondEvent;
|
| | | giftModel.timeLimitUpdate += TimeLimitUpdate;
|
| | | giftModel.SetDayRemind();
|
| | | Display();
|
| | | if (!giftModel.alreadyOpens.Contains(giftModel.selectIndex))
|
| | | {
|
| | | giftModel.selectIndex = giftModel.alreadyOpens[0];
|
| | | }
|
| | |
|
| | | m_ContainerDisplay.gameObject.SetActive(!WindowCenter.Instance.IsOpen<OffLineOnHookWin>());
|
| | | model.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
|
| | | GlobalTimeEvent.Instance.secondEvent += SecondEvent;
|
| | | giftModel.onSelectUpdate += OnSelectUpdate;
|
| | | giftModel.jumpGiftId = 0;
|
| | | Display();
|
| | | }
|
| | |
|
| | | protected override void OnAfterOpen()
|
| | |
| | |
|
| | | protected override void OnPreClose()
|
| | | {
|
| | | WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
| | | WindowCenter.Instance.windowAfterCloseEvent -= windowAfterCloseEvent;
|
| | | model.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
|
| | | TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh;
|
| | | GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
|
| | | giftModel.timeLimitUpdate -= TimeLimitUpdate;
|
| | | giftModel.onSelectUpdate -= OnSelectUpdate;
|
| | | }
|
| | |
|
| | | protected override void OnAfterClose()
|
| | |
| | | }
|
| | | #endregion
|
| | |
|
| | | private void WindowAfterOpenEvent(Window _win)
|
| | | {
|
| | | if(_win is OffLineOnHookWin)
|
| | | {
|
| | | m_ContainerDisplay.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | |
|
| | | private void windowAfterCloseEvent(Window _win)
|
| | | {
|
| | | if (_win is OffLineOnHookWin)
|
| | | {
|
| | | m_ContainerDisplay.gameObject.SetActive(true);
|
| | | }
|
| | | }
|
| | |
|
| | | private void RefreshBuyShopLimitEvent()
|
| | | private void OnSelectUpdate()
|
| | | {
|
| | | Display();
|
| | | }
|
| | |
|
| | | private void OnServerOpenDayRefresh()
|
| | | private void RefreshBuyShopLimitEvent()
|
| | | {
|
| | | Display();
|
| | | }
|
| | |
| | | DisplayTimer();
|
| | | }
|
| | |
|
| | | private void TimeLimitUpdate()
|
| | | {
|
| | | Display();
|
| | | }
|
| | |
|
| | | void DisplayTimer()
|
| | | {
|
| | | var seconds = (int)(giftModel.overDueTime - TimeUtility.ServerNow).TotalSeconds;
|
| | | if (giftModel.IsGiftOverdue(currentSelectId) || seconds <= 0)
|
| | | if (giftModel.selectIndex >= 0 && giftModel.selectIndex < giftModel.gifts.Count)
|
| | | {
|
| | | m_ContainerTime.gameObject.SetActive(false);
|
| | | m_Overdue.gameObject.SetActive(true);
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ContainerTime.gameObject.SetActive(true);
|
| | | m_Overdue.gameObject.SetActive(false);
|
| | | m_Timer.text = TimeUtility.SecondsToDHMSCHS(seconds);
|
| | | m_Timer.color = UIHelper.GetUIColor(TextColType.Green);
|
| | | var gift = giftModel.gifts[giftModel.selectIndex];
|
| | | var startTime = TimeUtility.GetTime(giftModel.startSeconds);
|
| | | var endTime = startTime.AddDays(gift.openDays);
|
| | | endTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 0, 0, 0);
|
| | | var seconds = (int)(endTime - TimeUtility.ServerNow).TotalSeconds;
|
| | | if (seconds <= 0)
|
| | | {
|
| | | m_ContainerTime.gameObject.SetActive(false);
|
| | | m_Overdue.gameObject.SetActive(true);
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ContainerTime.gameObject.SetActive(true);
|
| | | m_Overdue.gameObject.SetActive(false);
|
| | | m_Timer.text = TimeUtility.SecondsToDHMSCHS(seconds);
|
| | | m_Timer.color = UIHelper.GetUIColor(TextColType.Green);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void Display()
|
| | | {
|
| | | List<StoreConfig> _list = null;
|
| | | StoreConfig.TryGetStoreConfigs((int)StoreFunc.OSGift, out _list);
|
| | | var _index = 0;
|
| | | for (int i = 0; i < _list.Count; i++)
|
| | | for (int i = 0; i < giftModel.gifts.Count; i++)
|
| | | {
|
| | | if (!giftModel.IsGiftOverdue(_list[i].ID))
|
| | | if (giftModel.selectIndex == i)
|
| | | {
|
| | | var _storeConfig = Config.Instance.Get<StoreConfig>(_list[i].ID);
|
| | | var _limit = model.GetBuyShopLimit((uint)_list[i].ID);
|
| | | if (_limit == null || _limit.BuyCnt < _storeConfig.PurchaseNumber[0])
|
| | | {
|
| | | _index = i;
|
| | | currentSelectId = _list[i].ID;
|
| | | m_OSGifts[i].Display(_list[i].ID);
|
| | | break;
|
| | | }
|
| | | m_OSGifts[i].Display(giftModel.gifts[i].giftId);
|
| | | _index = i;
|
| | | break;
|
| | | }
|
| | | _index = i;
|
| | | }
|
| | | giftModel.SetDayRemind(giftModel.selectIndex);
|
| | | for (int i = 0; i < m_OSGifts.Length; i++)
|
| | | {
|
| | | m_OSGifts[i].gameObject.SetActive(_index == i);
|
| | | }
|
| | | DisplayTimer();
|
| | | }
|
| | |
|
| | | private void OnCloseClick()
|
| | | {
|
| | | CloseImmediately();
|
| | | }
|
| | | }
|
| | |
|