//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, December 11, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using EnhancedUI.EnhancedScroller;
|
|
namespace vnxbqy.UI
|
{
|
//段位奖励
|
|
public class SegmentRewardWin : Window
|
{
|
[SerializeField] ScrollerController m_ScrollerController;
|
CrossServerOneVsOneRewardModel m_CrossServerRewardModel;
|
CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerOneVsOneRewardModel>()); } }
|
List<SeasonAwardClass> ListSort = new List<SeasonAwardClass>();
|
#region Built-in
|
protected override void BindController()
|
{
|
m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
crossServerRewardModel.GetSeasonAward();
|
ToAddSorting();
|
OnCreateGridLineCell(m_ScrollerController);
|
m_ScrollerController.JumpIndex(JumpIndex());
|
}
|
|
protected override void OnAfterOpen()
|
{
|
crossServerRewardModel.CrossRealmPKAwardStateUpdate += CrossRealmPKAwardStateUpdate;
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfoEvent;
|
}
|
|
protected override void OnPreClose()
|
{
|
crossServerRewardModel.CrossRealmPKAwardStateUpdate -= CrossRealmPKAwardStateUpdate;
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfoEvent;
|
}
|
|
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
private void UpdatePlayerInfoEvent()
|
{
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
|
private void CrossRealmPKAwardStateUpdate()
|
{
|
m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见
|
}
|
void OnCreateGridLineCell(ScrollerController gridCtrl)
|
{
|
gridCtrl.Refresh();
|
for (int i = 0; i < ListSort.Count; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, ListSort[i].DanLv);
|
}
|
gridCtrl.Restart();
|
}
|
private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
|
{
|
int Index = cell.index;
|
SegmentRewardCell segmentRewardCell = cell.GetComponent<SegmentRewardCell>();
|
segmentRewardCell.SetReceive(Index);
|
}
|
|
private void ToAddSorting()
|
{
|
if (ListSort.Count <= 0)
|
{
|
foreach (var key in crossServerRewardModel.SegmentRewardDic.Keys)
|
{
|
ListSort.Add(crossServerRewardModel.SegmentRewardDic[key]);
|
}
|
}
|
ListSort.Sort(Compare);
|
}
|
int Compare(SeasonAwardClass x, SeasonAwardClass y)//数组排列
|
{
|
bool havex1 = IsReceive(x);
|
bool havey1 = IsReceive(y);
|
if (havex1.CompareTo(havey1) != 0)
|
{
|
return -havex1.CompareTo(havey1);
|
}
|
bool havex2 = IsReach(x);
|
bool havey2 = IsReach(y);
|
if (havex2.CompareTo(havey2) != 0)
|
{
|
return -havex2.CompareTo(havey2);
|
}
|
bool havex3 = IsDraw(x);
|
bool havey3 = IsDraw(y);
|
if (havex3.CompareTo(havey3) != 0)
|
{
|
return -havex3.CompareTo(havey3);
|
}
|
if (x.DanLv.CompareTo(y.DanLv) != 0)
|
{
|
return x.DanLv.CompareTo(y.DanLv);
|
}
|
return 1;
|
|
}
|
private bool IsReceive(SeasonAwardClass _seasonAwardClass)//未领取
|
{
|
bool Bool = false;
|
if (CrossServerOneVsOnePlayerInfo.Instance.DanLV >= _seasonAwardClass.DanLv && !crossServerRewardModel.IsAwardState(CrossRealmPKAwardStateEnum.DanLVAwardState, _seasonAwardClass.DanLv))
|
{
|
Bool = true;
|
}
|
return Bool;
|
}
|
private bool IsReach(SeasonAwardClass _seasonAwardClass)//未达到
|
{
|
bool Bool = false;
|
if (_seasonAwardClass.DanLv > CrossServerOneVsOnePlayerInfo.Instance.DanLV)
|
{
|
Bool = true;
|
}
|
return Bool;
|
}
|
private bool IsDraw(SeasonAwardClass _seasonAwardClass)//已领取
|
{
|
bool Bool = crossServerRewardModel.IsAwardState(CrossRealmPKAwardStateEnum.DanLVAwardState, _seasonAwardClass.DanLv);
|
return Bool;
|
}
|
private int JumpIndex()
|
{
|
int Index = 0;
|
for (int i = 0; i < ListSort.Count; i++)
|
{
|
if (IsReceive(ListSort[i]))
|
{
|
Index = i;
|
return Index;
|
}
|
}
|
return Index;
|
}
|
}
|
|
}
|
|
|
|
|