//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, May 10, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class OSTimeLimitGiftWin : Window { [SerializeField] OSGiftBehaviour[] m_OSGifts; [SerializeField] Text m_MoneyValue; [SerializeField] Text m_CoolDown; OSTimeLimitGiftModel m_Model; OSTimeLimitGiftModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } StoreModel m_StoreModel; StoreModel storeModel { get { return m_StoreModel ?? (m_StoreModel = ModelCenter.Instance.GetModel()); } } bool IsOutOffTime = false; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { storeModel.RefreshBuyShopLimitEvent += DisplayItems; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh; IsOutOffTime = false; timer = 0; UpdateCoolDown(); DisplayItems(); DisplayMoney(); } protected override void OnAfterOpen() { model.SetDayRemind(); } protected override void OnPreClose() { storeModel.RefreshBuyShopLimitEvent -= DisplayItems; PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent; TimeUtility.OnServerOpenDayRefresh -= OnServerOpenDayRefresh; } protected override void OnAfterClose() { } float timer = 0; float m_DelayTime = 0.5f; protected override void LateUpdate() { base.LateUpdate(); if (IsOutOffTime) { return; } timer += Time.deltaTime; if (timer > m_DelayTime) { UpdateCoolDown(); timer = 0; } } #endregion private void UpdateCoolDown() { var t = model.overdueTime - TimeUtility.ServerNow; m_CoolDown.text = StringUtility.Contact(Language.Get("OSActivityCoolDown"), TimeUtility.SecondsToDHMSCHS((int)t.TotalSeconds)); if (TimeUtility.CreateDays > model.openDays) { IsOutOffTime = true; m_CoolDown.color = UIHelper.GetUIColor(TextColType.NavyYellow); m_CoolDown.text = Language.Get("ActivityEnd"); } else { m_CoolDown.color = UIHelper.GetUIColor(TextColType.LightGreen); } } private void DisplayItems() { List _list; var day = Mathf.Max(1, TimeUtility.CreateDays); day = Mathf.Min(day, model.openDays); if (model.TryGetGifts(day, out _list)) { for (int i = 0; i < m_OSGifts.Length; i++) { if (i < _list.Count) { m_OSGifts[i].gameObject.SetActive(true); m_OSGifts[i].Display(_list[i].ID); } else { m_OSGifts[i].gameObject.SetActive(false); } } } } private void DisplayMoney() { m_MoneyValue.text = PlayerDatas.Instance.baseData.Gold.ToString(); } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh type) { if (type == PlayerDataRefresh.Gold) { DisplayMoney(); } } private void OnServerOpenDayRefresh() { DisplayItems(); } } }