using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class DaysRechargeCell : CellView { [SerializeField] Text m_Consume; [SerializeField] Slider m_ConsumeSlider; [SerializeField] Text m_ConsumeProgress; [SerializeField] RareItem[] m_RebateItems; [SerializeField] Button m_GetBtn; [SerializeField] Text m_GetBtnText; [SerializeField] UIEffect m_GetSfx; [SerializeField] Image m_GotSign; DaysAccumulateRechargeModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } public void Display(int _index) { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.DaysAccumulateRecharge, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var awards = operation.GetReward(TimeUtility.ServerNow).recharges[_index]; m_Consume.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(awards.requireGold)); var current = model.rechargeTotal; m_ConsumeSlider.value = Mathf.Min(1, (float)current / awards.requireGold); m_ConsumeProgress.text = StringUtility.Contact(UIHelper.GetMoneyFormat(current), "/", UIHelper.GetMoneyFormat(awards.requireGold)); for (int i = 0; i < m_RebateItems.Length; i++) { if (i < awards.items.Count) { var itemDate = awards.items[i]; m_RebateItems[i].SetActive(true); ItemCellModel itemCell = new ItemCellModel(itemDate.id, true, (ulong)itemDate.count); m_RebateItems[i].Init(itemCell); m_RebateItems[i].button.RemoveAllListeners(); m_RebateItems[i].button.AddListener(() => { ItemTipUtility.Show(itemDate.id); }); } else { m_RebateItems[i].SetActive(false); } } bool got = model.IsRewardGot(awards); m_GetBtn.SetActive(!got); m_GetBtn.SetInteractable(m_GetBtnText, current >= awards.requireGold && !got); m_GotSign.SetActive(got); m_GetSfx.SetActive(current >= awards.requireGold && !got); m_GetBtn.RemoveAllListeners(); m_GetBtn.AddListener(() => { GetReward(_index); }); } } private void GetReward(int index) { OperationBase operationBase; OperationAccumulateRecharge.Recharge recharge = null; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.DaysAccumulateRecharge, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var reward = operation.GetReward(TimeUtility.ServerNow); recharge = reward.recharges[index]; } if (recharge != null) { var count = packModel.GetEmptyGridCount(PackType.Item); if (count < recharge.items.Count) { SysNotifyMgr.Instance.ShowTip("BagFull"); return; } if (model.SatisfyGetReward(recharge)) { model.GetAccumulateRechargeReward(recharge); } } } } }