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(); _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(); } }