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()); } } public Button close { get; set; } private void OnTitlePropertyClick() { WindowCenter.Instance.Open(); } 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 _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(); 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(); frame.Create(); close = frame.GetComponentInChildren