//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, May 10, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class OpenServerGiftWin : Window { [SerializeField] RectTransform m_ContainerDisplay; [SerializeField] SuperValueGiftBehaviour[] m_OSGifts; [SerializeField] RectTransform m_ContainerTime; [SerializeField] Text m_Overdue; [SerializeField] Text m_Timer; VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { if (!giftModel.alreadyOpens.Contains(giftModel.selectIndex)) { giftModel.selectIndex = giftModel.alreadyOpens[0]; } GlobalTimeEvent.Instance.secondEvent += SecondEvent; giftModel.onSelectUpdate += OnSelectUpdate; giftModel.jumpGiftId = 0; Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= SecondEvent; giftModel.onSelectUpdate -= OnSelectUpdate; } protected override void OnAfterClose() { } #endregion private void OnSelectUpdate() { Display(); } private void SecondEvent() { DisplayTimer(); } void DisplayTimer() { if (giftModel.selectIndex >= 0 && giftModel.selectIndex < giftModel.gifts.Count) { 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() { var _index = 0; for (int i = 0; i < giftModel.gifts.Count; i++) { if (giftModel.selectIndex == i) { var rechargeId = giftModel.GetRechargeId(giftModel.gifts[i].payType); m_OSGifts[i].Display(rechargeId); _index = i; break; } } giftModel.SetDayRemind(giftModel.selectIndex); for (int i = 0; i < m_OSGifts.Length; i++) { m_OSGifts[i].gameObject.SetActive(_index == i); } DisplayTimer(); } } }