//--------------------------------------------------------
|
// [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<AchievementModel>(); } }
|
VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
|
|
#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((int)vipModel.GetPayRmb(model.BPCTGID)));
|
|
if (orgPrice != null)
|
{
|
orgPrice.SetActiveIL(PlayerDatas.Instance.baseData.IsActive90Off);
|
orgPrice.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat((int)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);
|
}
|
}
|
|
}
|