//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, July 12, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class DaysRechargeSumWin : Window { [SerializeField] Text m_OperationSurplusTime; [SerializeField] Text m_OperationOpenTime; [SerializeField] Text m_OperationSurplusTimeTitle; [SerializeField] ScrollerController m_Controller; [SerializeField] Button m_Recharge; DaysAccumulateRechargeModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Controller.OnRefreshCell += OnRefreshCell; m_Controller.lockType = EnhanceLockType.KeepVertical; m_Recharge.SetListener(()=> { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc1); }); } protected override void OnPreOpen() { Display(); model.accumulateRechargeUpdate += AccumulateRechargeUpdate; OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent; } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.accumulateRechargeUpdate -= AccumulateRechargeUpdate; OperationTimeHepler.Instance.operationTimeUpdateEvent -= OperationTimeUpdateEvent; } protected override void OnAfterClose() { } float timer = 0f; float delay = 0.5f; protected override void LateUpdate() { base.LateUpdate(); timer += Time.deltaTime; if (timer >= delay) { timer = 0f; DisplayOperationSurplusTime(); } } #endregion private void OperationTimeUpdateEvent(Operation type) { if (type == Operation.DaysAccumulateRecharge) { Display(); } } private void AccumulateRechargeUpdate() { m_Controller.m_Scorller.RefreshActiveCellViews(); } private void Display() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.DaysAccumulateRecharge, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; m_OperationOpenTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); } DisplayOperationSurplusTime(true); DisplayRebate(); } private void DisplayRebate() { int index = 0; m_Controller.Refresh(); OperationBase operationBase; OperationAccumulateRecharge.Reward reward = null; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.DaysAccumulateRecharge, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; reward = operation.GetReward(TimeUtility.ServerNow); for (int i = 0; i < reward.recharges.Count; i++) { m_Controller.AddCell(ScrollerDataType.Header, i); if (index == 0) { if (model.SatisfyGetReward(reward.recharges[i])) { index = i; } } } } m_Controller.Restart(); m_Controller.JumpIndex(index); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { DaysRechargeCell consumeRebate = cell as DaysRechargeCell; consumeRebate.Display(cell.index); } private void DisplayOperationSurplusTime(bool _force = false) { var seconds = OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.DaysAccumulateRecharge); if (seconds > 0) { m_OperationSurplusTime.text = TimeUtility.SecondsToConsumeRebate(seconds); m_OperationSurplusTime.color = UIHelper.GetUIColor(TextColType.Green); if (!m_OperationSurplusTimeTitle.gameObject.activeSelf) { m_OperationSurplusTimeTitle.SetActive(true); } } else { if (_force || m_OperationSurplusTime.color.Equals(UIHelper.GetUIColor(TextColType.Green))) { m_OperationSurplusTime.text = Language.Get("ActivityEnd"); m_OperationSurplusTime.color = UIHelper.GetUIColor(TextColType.Red); m_OperationSurplusTimeTitle.SetActive(false); } } } } }