using System.Collections.Generic;
|
using UnityEngine;
|
|
public class SimpleMinggeAttributeWin : UIBase
|
{
|
[SerializeField] TextEx title;
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] ScrollerController skillScroller;
|
[SerializeField] SimpleMinggeAttributeCell simpleMinggeAttributeCell;
|
Dictionary<int, long> simpleAttrDict;
|
List<int> simpleAttrSortList;
|
string simpleAttrTitleName;
|
Dictionary<int, int> skillDic;
|
List<int> skillList;
|
protected override void OnPreOpen()
|
{
|
simpleAttrDict = AttributeManager.Instance.simpleAttrDict;
|
simpleAttrSortList = AttributeManager.Instance.simpleAttrSortList;
|
simpleAttrTitleName = AttributeManager.Instance.simpleAttrTitleName;
|
skillDic = AttributeManager.Instance.skillDic;
|
skillList = AttributeManager.Instance.skillList;
|
|
skillScroller.OnGetDynamicSize += OnGetSkillChatDynamicSize;
|
skillScroller.OnRefreshCell += OnRefreshSkillCell;
|
|
scroller.OnRefreshCell += OnRefreshCell;
|
title.text = simpleAttrTitleName;
|
CreateScroller();
|
CreateSkillScroller();
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
|
skillScroller.OnGetDynamicSize -= OnGetSkillChatDynamicSize;
|
skillScroller.OnRefreshCell -= OnRefreshSkillCell;
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<SimpleAttributeAttrCell>();
|
_cell?.Display(cell.index, simpleAttrSortList, simpleAttrDict);
|
}
|
|
private void OnRefreshSkillCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<SimpleMinggeAttributeCell>();
|
_cell?.Display(cell.index, skillList, skillDic);
|
}
|
|
private void CreateSkillScroller()
|
{
|
skillScroller.Refresh();
|
if (skillList != null)
|
{
|
for (int i = 0; i < skillList.Count; i++)
|
{
|
skillScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
skillScroller.Restart();
|
}
|
|
private bool OnGetSkillChatDynamicSize(ScrollerDataType type, int index, out float height)
|
{
|
height = 0;
|
if (skillList.IsNullOrEmpty() || index < 0 || index >= skillList.Count)
|
return false;
|
if (!TryGetContentByIndex(index, out string content))
|
return false;
|
height = simpleMinggeAttributeCell.GetHeight(content);
|
return true;
|
}
|
|
private bool TryGetContentByIndex(int index, out string content)
|
{
|
content = string.Empty;
|
if (skillDic.IsNullOrEmpty() || index < 0 || index >= skillList.Count)
|
return false;
|
int skillID = skillList[index];
|
int lv = skillDic == null || !skillDic.ContainsKey(skillID) ? 0 : skillDic[skillID];
|
if (!AttributeManager.Instance.TryGetInfoBySkillID(skillID, lv, out string name, out content))
|
return false;
|
return true;
|
}
|
|
private void CreateScroller()
|
{
|
scroller.Refresh();
|
if (simpleAttrSortList != null)
|
{
|
int rowCount = (int)Mathf.Ceil((float)simpleAttrSortList.Count / AttributeManager.Instance.SimpleAttributeMaxRowCnt);
|
for (int i = 0; i < rowCount; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
scroller.Restart();
|
}
|
}
|