//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, March 07, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class SuccessBattlePassWin : Window { [SerializeField] ScrollerController m_SuccessType; [SerializeField] ScrollerController m_SuccessLine; [SerializeField] Button m_BuyBattelPass; //[SerializeField] ImageEx m_BattelPassImg; [SerializeField] Text Price; TextEx orgPrice; AchievementModel model { get { return ModelCenter.Instance.GetModel(); } } VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { var obj = m_BuyBattelPass.FindComponent("Text", "Txt_orgPrice"); if (obj != null) orgPrice = obj as TextEx; } protected override void AddListeners() { m_SuccessType.OnRefreshCell += OnRefreshCell; m_SuccessLine.OnRefreshCell += OnRefreshBPCell; m_BuyBattelPass.SetListener(()=> { vipModel.CTG(model.BPCTGID); }); } protected override void OnPreOpen() { vipModel.rechargeCountEvent += RechargeCountEvent; model.OnUpdateBPDataEvent += UpdateBPDataEvent; model.selectSuccessTypeRefresh += OnSelectSuccessTypeRefresh; model.selectSuccessType = GetDefaultSuccesType(); m_SuccessType.Refresh(); foreach (var successGroup in model.SuccessBPArray) { m_SuccessType.AddCell(ScrollerDataType.Header, successGroup); } m_SuccessType.Restart(); m_SuccessType.JumpIndex(Array.IndexOf(model.SuccessBPArray, model.selectSuccessType)); ShowBuyButton(); m_SuccessLine.m_Scorller.RefreshActiveCellViews(); } private void UpdateBPDataEvent() { m_SuccessLine.m_Scorller.RefreshActiveCellViews(); } private void RechargeCountEvent(int id) { if (id != model.BPCTGID) { return; } ShowBuyButton(); } private void ShowBuyButton() { m_BuyBattelPass.SetActive(!model.isBuyBP()); Price.text = Language.Get("SuperValueGiftCost", UIHelper.GetMoneyFormat(vipModel.GetPayRmb(model.BPCTGID))); if (orgPrice != null) { orgPrice.SetActiveIL(PlayerDatas.Instance.baseData.IsActive90Off); orgPrice.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(vipModel.GetOrgPayRmb(model.BPCTGID))); } } // 获取最靠前的可领取 public int GetDefaultSuccesType() { //Array.IndexOf(SuccessBPArray, 1); if (model.redpoint.state == RedPointState.None) { return model.SuccessBPArray[0]; } foreach (var point in model.SuccessBPRedPoint) { if (point.Value.state == RedPointState.None) continue; return point.Key; } return model.SuccessBPArray[0]; } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.selectSuccessTypeRefresh -= OnSelectSuccessTypeRefresh; vipModel.rechargeCountEvent -= RechargeCountEvent; model.OnUpdateBPDataEvent -= UpdateBPDataEvent; } protected override void OnAfterClose() { } #endregion private void OnRefreshCell(ScrollerDataType type, CellView cell) { var curCell = cell as SuccessBPTypeCell; curCell.Display(cell.index); } private void OnRefreshBPCell(ScrollerDataType type, CellView cell) { var curCell = cell as SuccessBPCell; curCell.Display(cell.index); } private int SuccessBPSort(int x, int y) { //表顺序-战令已领取 Achievement achievementX; model.TryGetAchievement(x, out achievementX); Achievement achievementY; model.TryGetAchievement(y, out achievementY); if (achievementX.completedBP == achievementY.completedBP) { return x.CompareTo(y); } return achievementX.completedBP.CompareTo(achievementY.completedBP); } private void OnSelectSuccessTypeRefresh() { m_SuccessType.m_Scorller.RefreshActiveCellViews(); m_SuccessLine.Refresh(); var idList = model.GetAchievementsByCategory(model.selectSuccessType); idList.Sort(SuccessBPSort); int jumpIndex = 0; Achievement achievement; int index = 0; foreach (var successID in idList) { m_SuccessLine.AddCell(ScrollerDataType.Header, successID); if (jumpIndex == 0 && model.TryGetAchievement(successID, out achievement)) { if (Achievement.IsReach(successID, achievement.progress) || achievement.completed) { if (!achievement.completed) { jumpIndex = index; } else if (model.isBuyBP() && !achievement.completedBP) { jumpIndex = index; } } } index++; } jumpIndex = Math.Max(0, jumpIndex - 1); m_SuccessLine.Restart(); m_SuccessLine.JumpIndex(jumpIndex); } } }