//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, June 11, 2019 //-------------------------------------------------------- using UnityEngine.UI; using vnxbqy.UI; public class ManyDayRechargeWin : ILWindow { Text m_MoneyAd; Text m_ActiveInfo; Text m_TimeInfo; ScrollerController m_AwardScrollControl; ScrollerController m_TitleScrollControl; #region Built-in protected override void BindController() { m_MoneyAd = proxy.GetWidgtEx("Text_Money"); m_ActiveInfo = proxy.GetWidgtEx("info"); m_TimeInfo = proxy.GetWidgtEx("Text_OperationTime"); m_AwardScrollControl = proxy.GetWidgtEx("Scroller"); m_TitleScrollControl = proxy.GetWidgtEx("ScrollerTitle"); } protected override void AddListeners() { } protected override void OnPreOpen() { m_AwardScrollControl.OnRefreshCell += OnRefreshCell; m_TitleScrollControl.OnRefreshCell += OnTitleRefreshCell; ManyDayRechargeModel.Instance.onSelectUpdate += OnSelectUpdate; ManyDayRechargeModel.Instance.onRechargeInfoUpdate += onRechargeInfoUpdate; ILOperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent; ManyDayRechargeModel.Instance.selectType = ManyDayRechargeModel.Instance.GetSelectType(); } protected override void OnAfterOpen() { Display(); } protected override void OnPreClose() { m_AwardScrollControl.OnRefreshCell -= OnRefreshCell; m_TitleScrollControl.OnRefreshCell -= OnTitleRefreshCell; ManyDayRechargeModel.Instance.onSelectUpdate -= OnSelectUpdate; ManyDayRechargeModel.Instance.onRechargeInfoUpdate -= onRechargeInfoUpdate; ILOperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent; } protected override void OnAfterClose() { } #endregion void Display() { DisplayBase(); DisplayTitleScroll(); DisplayAwardScroll(); DisplayTime(); } void DisplayBase() { var showNum = UIHelper.GetMoneyFormat(ManyDayRechargeModel.Instance.selectType); m_MoneyAd.text = showNum.ToString(); m_ActiveInfo.text = Language.Get("ManyDayRecharge2", showNum); } void DisplayTitleScroll() { m_TitleScrollControl.Refresh(); for (int i = 0; i < ManyDayRechargeModel.Instance.rechargeList.Count; i++) { //传入档位价格 m_TitleScrollControl.AddCell(ScrollerDataType.Header, ManyDayRechargeModel.Instance.rechargeList[i]); } m_TitleScrollControl.Restart(); m_TitleScrollControl.JumpIndex(ManyDayRechargeModel.Instance.rechargeList.IndexOf(ManyDayRechargeModel.Instance.selectType)); } void DisplayAwardScroll() { OperationBase operationBase; if (!OperationTimeHepler.Instance.TryGetOperationTime(ManyDayRechargeModel.operationType, out operationBase)) { return; } OperationManyDayRecharge operation = operationBase as OperationManyDayRecharge; var jumpIndex = -1; var index = 0; m_AwardScrollControl.Refresh(); var recharges = operation.drlcInfoDict[ManyDayRechargeModel.Instance.selectType]; for (var i = 0; i < recharges.Count; i++) { //传入档位的数组索引 m_AwardScrollControl.AddCell(ScrollerDataType.Header, i); var state = ManyDayRechargeModel.Instance.GetRechargeStateByIndex(ManyDayRechargeModel.Instance.selectType, recharges[i].NeedDays, recharges[i].AwardIndex); //优先可领取的 然后找到顺位未达成的 if (state == 1) { jumpIndex = index; } else if (jumpIndex == -1 && state == 0) { //顺位未达成 jumpIndex = index; } index++; } m_AwardScrollControl.Restart(); if (jumpIndex != -1) { m_AwardScrollControl.JumpIndex(jumpIndex); } } private void OnSelectUpdate() { DisplayBase(); m_TitleScrollControl.m_Scorller.RefreshActiveCellViews(); DisplayAwardScroll(); } private void onRechargeInfoUpdate() { m_AwardScrollControl.m_Scorller.RefreshActiveCellViews(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var rechargeCell = cell.GetILBehaviour(); //传入档位字典的数组索引 rechargeCell.Display(cell.index); } private void OnTitleRefreshCell(ScrollerDataType type, CellView cell) { var title = cell.GetILBehaviour(); //传入档位价格 title.Display(cell.index); } private void DisplayTime() { OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(ManyDayRechargeModel.operationType, out operationBase)) { OperationManyDayRecharge operation = operationBase as OperationManyDayRecharge; m_TimeInfo.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), operation.ToDisplayTime()); } } private void operationTimeUpdateEvent(Operation type) { if (type == ManyDayRechargeModel.operationType) { ManyDayRechargeModel.Instance.selectType = ManyDayRechargeModel.Instance.GetSelectType(); Display(); } } }