using System;
|
using UnityEngine;
|
|
public class BuffInfoWin : UIBase
|
{
|
[SerializeField] BuffInfoCell buffInfoCell;
|
[SerializeField] ImageEx teamImage;
|
[SerializeField] ImageEx heroImage;
|
[SerializeField] TextEx heroNameText;
|
[SerializeField] ScrollerController buffScroller;
|
ViewBuffManager manager => ViewBuffManager.Instance;
|
BattleClickBuffData data;
|
protected override void OnPreOpen()
|
{
|
buffScroller.OnRefreshCell += OnRefreshCell;
|
buffScroller.OnGetDynamicSize += OnGetWorldChatDynamicSize;
|
|
data = manager.currentBuffData;
|
|
var heroConfig = HeroConfig.Get(data.heroID);
|
if (heroConfig == null) return;
|
|
var heroSkinConfig = HeroSkinConfig.Get(data.skinID);
|
if (heroSkinConfig == null) return;
|
|
teamImage.SetSprite(data.isMySide ? "OtherHeroDetailBGBlue" : "OtherHeroDetailBGRed");
|
var sprite = UILoader.LoadSprite("HeroHead", HeroSkinConfig.Get(data.skinID).SquareIcon);
|
if (sprite == null)
|
{
|
// 内网未配置时
|
heroImage.SetSprite("herohead_default");
|
}
|
else
|
{
|
heroImage.overrideSprite = sprite;
|
}
|
heroNameText.text = heroConfig.Name;
|
|
CreateScroller();
|
}
|
|
protected override void OnPreClose()
|
{
|
buffScroller.OnRefreshCell -= OnRefreshCell;
|
buffScroller.OnGetDynamicSize -= OnGetWorldChatDynamicSize;
|
}
|
|
public bool TryGetSkillConfig(int index, out SkillConfig config)
|
{
|
config = null;
|
if (data.datas?.Count <= index)
|
return false;
|
config = SkillConfig.Get((int)data.datas[index].SkillID);
|
return config != null;
|
}
|
|
private bool OnGetWorldChatDynamicSize(ScrollerDataType type, int index, out float height)
|
{
|
height = 0;
|
if (!TryGetSkillConfig(index, out SkillConfig config))
|
return false;
|
height = buffInfoCell.GetTextHeight(config.Description);
|
return true;
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<BuffInfoCell>();
|
_cell?.Display(cell.index, data);
|
}
|
|
private void CreateScroller()
|
{
|
buffScroller.Refresh();
|
for (int i = 0; i < data.datas.Count; i++)
|
{
|
buffScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
buffScroller.Restart();
|
}
|
|
|
}
|