using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.EventSystems;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class RoleTitle : Window, SecondWindowInterface
|
{
|
[SerializeField] Button m_GetTitleBtn;
|
[SerializeField] Button m_ActivityTitleBtn;
|
[SerializeField] Button m_VipTitleBtn;
|
[SerializeField] Button m_AchieveTitleBtn;
|
[SerializeField] ScrollerController m_Controller;
|
[SerializeField] Button m_TitlePropertyBtn;
|
[SerializeField] Text m_TitleTip;
|
private TitleType presentType = TitleType.None;
|
|
TitleModel m_TitleModel;
|
TitleModel model
|
{
|
get
|
{
|
return m_TitleModel ?? (m_TitleModel = ModelCenter.Instance.GetModel<TitleModel>());
|
}
|
}
|
|
public Button close { get; set; }
|
|
private void OnTitlePropertyClick()
|
{
|
WindowCenter.Instance.Open<TitleTotalGetWin>();
|
}
|
|
private void OnRefreshGainTitle()
|
{
|
switch (presentType)
|
{
|
case TitleType.Get:
|
OnIsGetTitle();
|
break;
|
case TitleType.Activity:
|
case TitleType.Vip:
|
case TitleType.Achivement:
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
break;
|
}
|
|
}
|
|
void OnIsGetTitle()
|
{
|
presentType = TitleType.Get;
|
|
model.roleTitleList.Clear();
|
var _dict = model.GetAllGainTitle();
|
foreach (var _titleId in _dict.Keys)
|
{
|
if (model.IsTitleGain(_titleId))
|
{
|
model.roleTitleList.Add(_titleId);
|
}
|
}
|
m_TitleTip.SetActive(model.roleTitleList.Count < 1);
|
OnRefreshScroller();
|
|
SetTitleSelect(presentType);
|
}
|
|
private void SetTitleSelect(TitleType type)
|
{
|
m_GetTitleBtn.image.SetSprite("Title_TabDark");
|
m_VipTitleBtn.image.SetSprite("Title_TabDark");
|
m_AchieveTitleBtn.image.SetSprite("Title_TabDark");
|
m_ActivityTitleBtn.image.SetSprite("Title_TabDark");
|
switch (type)
|
{
|
case TitleType.Get:
|
m_GetTitleBtn.image.SetSprite("Title_TabRight");
|
break;
|
case TitleType.Activity:
|
m_ActivityTitleBtn.image.SetSprite("Title_TabRight");
|
break;
|
case TitleType.Vip:
|
m_VipTitleBtn.image.SetSprite("Title_TabRight");
|
break;
|
case TitleType.Achivement:
|
m_AchieveTitleBtn.image.SetSprite("Title_TabRight");
|
break;
|
}
|
}
|
|
void OnTitle(TitleType type)
|
{
|
if (presentType == type)
|
{
|
return;
|
}
|
model.roleTitleList.Clear();
|
m_TitleTip.SetActive(false);
|
List<DienstgradConfig> _list = DienstgradConfig.GetTitlesByType(type);
|
if (_list != null)
|
{
|
foreach (DienstgradConfig cfg in _list)
|
{
|
model.roleTitleList.Add(cfg.ID);
|
}
|
}
|
OnRefreshScroller();
|
|
presentType = type;
|
SetTitleSelect(presentType);
|
}
|
|
void OnRefreshScroller()
|
{
|
model.roleTitleList.Sort(Compare);
|
if (model.roleTitleList.Count > 0)
|
{
|
model.presentSelectTitle = model.roleTitleList[0];
|
}
|
m_Controller.Refresh();
|
for (int i = 0; i < model.roleTitleList.Count; i++)
|
{
|
m_Controller.AddCell(ScrollerDataType.Normal, i, OnTitleItemClick);
|
}
|
m_Controller.Restart();
|
}
|
|
void OnTitleItemClick(CellView cell)
|
{
|
int index = cell.index;
|
if (index < model.roleTitleList.Count)
|
{
|
model.presentSelectTitle = model.roleTitleList[index];
|
WindowCenter.Instance.Open<TitleDetailsWin>();
|
m_Controller.m_Scorller.RefreshActiveCellViews();
|
}
|
}
|
|
private int Compare(int x, int y)
|
{
|
bool newget_x = model.IsNewGet(x);
|
bool newget_y = model.IsNewGet(y);
|
if (newget_x.CompareTo(newget_y) != 0)
|
{
|
return -newget_x.CompareTo(newget_y);
|
}
|
|
bool isRed_x = model.IsStarRedpoint(x);
|
bool isRed_y = model.IsStarRedpoint(y);
|
if (isRed_x.CompareTo(isRed_y) != 0)
|
{
|
return -isRed_x.CompareTo(isRed_y);
|
}
|
|
bool isGetx = model.IsTitleGain(x);
|
bool isGety = model.IsTitleGain(y);
|
if (isGetx.CompareTo(isGety) != 0)
|
{
|
return -isGetx.CompareTo(isGety);
|
}
|
var config_x = DienstgradConfig.Get(x);
|
var config_y = DienstgradConfig.Get(y);
|
if (config_x != null && config_y != null
|
&& config_x.order != config_y.order)
|
{
|
return config_x.order.CompareTo(config_y.order);
|
}
|
return 0;
|
}
|
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
m_TitlePropertyBtn.onClick.AddListener(OnTitlePropertyClick);
|
m_GetTitleBtn.onClick.AddListener(OnIsGetTitle);
|
m_ActivityTitleBtn.onClick.AddListener(() => { OnTitle(TitleType.Activity); });
|
m_VipTitleBtn.onClick.AddListener(() => { OnTitle(TitleType.Vip); });
|
m_AchieveTitleBtn.onClick.AddListener(() => { OnTitle(TitleType.Achivement); });
|
close.onClick.AddListener(CloseClick);
|
m_Controller.lockType = EnhanceLockType.KeepVertical;
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.OnRefreshGainTitle += OnRefreshGainTitle;
|
//C0335_tagCPlayerDienstgradRefresh titlePack = new C0335_tagCPlayerDienstgradRefresh();
|
//GameNetSystem.Instance.SendInfo(titlePack);
|
OnIsGetTitle();
|
m_Controller.JumpIndex(0);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
presentType = TitleType.None;
|
model.OnRefreshGainTitle -= OnRefreshGainTitle;
|
model.SetTitlesGet();
|
}
|
}
|
}
|
|