using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
|
public class HeroFatesWin : UIBase
|
{
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] ScrollerController attrScroller;
|
HeroFatesManager manager { get { return HeroFatesManager.Instance; } }
|
protected override void InitComponent()
|
{
|
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += OnRefreshCell;
|
attrScroller.OnRefreshCell += OnRefreshAttrCell;
|
manager.OnUpdateHeroFatesInfoEvent += OnUpdateHeroFatesInfo;
|
CreateScoller();
|
|
int firstIndex = 0;
|
manager.HasShowRedDotFates(out firstIndex);
|
scroller.JumpIndex(firstIndex);
|
|
CreateAttrScoller();
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
attrScroller.OnRefreshCell -= OnRefreshAttrCell;
|
manager.OnUpdateHeroFatesInfoEvent -= OnUpdateHeroFatesInfo;
|
}
|
|
private void OnRefreshAttrCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<HeroFatesAttrCell>();
|
_cell?.Display(cell.index, totalAttrIdList, totalAttrDict);
|
}
|
|
private void OnUpdateHeroFatesInfo()
|
{
|
RefeshScoller();
|
CreateAttrScoller();
|
}
|
List<int> fatesIDList = new List<int>();
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<HeroFatesCell>();
|
_cell?.Display(cell.index, fatesIDList);
|
}
|
|
void CreateScoller()
|
{
|
scroller.Refresh();
|
fatesIDList = manager.GetFatesIDList();
|
if (!fatesIDList.IsNullOrEmpty())
|
{
|
for (int i = 0; i < fatesIDList.Count; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
scroller.Restart();
|
}
|
|
void RefeshScoller()
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
List<int> totalAttrIdList = new List<int>();
|
Dictionary<int, long> totalAttrDict = new Dictionary<int, long>();
|
void CreateAttrScoller()
|
{
|
totalAttrDict = manager.GetTotalAttr();
|
if (totalAttrDict.IsNullOrEmpty())
|
return;
|
totalAttrIdList = totalAttrDict.Keys
|
.OrderByDescending(attrID => totalAttrDict[attrID] > 0) // 属性值>0的排前面
|
.ThenBy(attrID => attrID) // 然后按attrID升序
|
.ToList();
|
|
attrScroller.Refresh();
|
if (!totalAttrIdList.IsNullOrEmpty())
|
{
|
int rowCount = Mathf.CeilToInt((float)totalAttrIdList.Count / manager.attrRowCountMax);
|
for (int i = 0; i < rowCount; i++)
|
{
|
attrScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
attrScroller.Restart();
|
}
|
|
}
|