using System; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; namespace Snxxz.UI { public class PrayforDrugWin : Window { [SerializeField] ScrollerController ctrl; [SerializeField] Button prayBtn; [SerializeField] Image prayBtnImg; [SerializeField] Text costText; [SerializeField] Button closeBtn; [Header("最大格子数")] [SerializeField] int gridCount = 100; [Header("每行数量")] [SerializeField] int columnCout = 5; PrayForDurgModel PrayModel { get { return ModelCenter.Instance.GetModel(); } } List praylist; protected override void BindController() { ctrl.OnRefreshCell += RefreshPrayDrug; } protected override void AddListeners() { closeBtn.AddListener(CloseClick); } protected override void OnPreOpen() { PrayModel.ClearPrayRedpoint(); praylist = PrayModel.GetPrayDruglist(); PrayModel.RefreshPrayEvent += UpdatePrayBtn; UpdatePrayPack(); SetDisplayUI(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PrayModel.RefreshPrayEvent -= UpdatePrayBtn; } protected override void OnAfterClose() { } private void SetDisplayUI() { costText.text = PrayModel.costMoney.ToString(); UpdatePrayBtn(); } private void UpdatePrayBtn() { prayBtn.RemoveAllListeners(); if (PrayModel.alreadyPrayNum >= PrayModel.everyDayNum) { prayBtnImg.material = MaterialUtility.GetDefaultSpriteGrayMaterial(); } else { prayBtn.AddListener(ClickPrayBtn); prayBtnImg.material = MaterialUtility.GetUIDefaultGraphicMaterial(); } } private void ClickPrayBtn() { if(PrayModel.alreadyPrayNum >= PrayModel.everyDayNum) { return; } if(UIHelper.GetMoneyCnt(1) >= (ulong)PrayModel.costMoney) { PrayModel.SendPrayElixir(); } else { WindowCenter.Instance.Open(); } } private void UpdatePrayPack() { if (ctrl.GetNumberOfCells(ctrl.m_Scorller) == 0) { ctrl.Refresh(); var _line = gridCount / columnCout; for (int i = 0; i < _line; i++) { ctrl.AddCell(ScrollerDataType.Header, i); } ctrl.Restart(); } else { ctrl.m_Scorller.RefreshActiveCellViews(); } ctrl.JumpIndex(0); } private void RefreshPrayDrug(ScrollerDataType type, CellView cell) { var _line = cell.index; int length = cell.transform.childCount; for (int i = 0; i < length; i++) { var _index = _line * length + i; PrayDrugCell prayCell = cell.transform.GetChild(i).GetComponent(); if(_index < praylist.Count) { prayCell.SetDisplayModel(praylist[_index]); } else { prayCell.SetDisplayModel(0); } } } } }