using UnityEngine; public class HeroReturnStarUpWin : UIBase { [SerializeField] HeroHeadBaseCell heroHeadBaseCell; [SerializeField] ImageEx jobImg; [SerializeField] TextEx nameText; [SerializeField] ButtonEx changeButton; [SerializeField] ButtonEx lockButton; [SerializeField] GradientText heroNameText; [SerializeField] TextEx timeText; [SerializeField] ImageEx heroImage; [SerializeField] ButtonEx goCallButton; [SerializeField] ButtonEx goInfoButton; [SerializeField] ButtonEx closeButton; [SerializeField] ScrollerController scroller; HeroReturnManager manager => HeroReturnManager.Instance; protected override void InitComponent() { closeButton.SetListener(CloseWindow); goCallButton.SetListener(() => { UIManager.Instance.CloseWindow(); UIManager.Instance.OpenWindow(); }); goInfoButton.SetListener(() => { if (heroConfig == null) return; UIManager.Instance.CloseWindow(); HeroUIManager.Instance.selectForPreviewHeroID = heroConfig.HeroID; UIManager.Instance.OpenWindow(); }); changeButton.SetListener(() => { UIManager.Instance.OpenWindow(); }); lockButton.SetListener(() => { manager.SaveStarUpLockState(manager.GetOperationHeroAppearInfo()); Display(); manager.UpdateRedpoint(); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent; manager.OnUpdateHeroAppearPlayerInfoEvent += OnUpdateHeroAppearPlayerInfoEvent; Display(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent; manager.OnUpdateHeroAppearPlayerInfoEvent -= OnUpdateHeroAppearPlayerInfoEvent; } private void OnUpdateHeroAppearPlayerInfoEvent() { scroller.m_Scorller.RefreshActiveCellViews(); Display(); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, cell); } private void OnSecondEvent() { manager.GetActTimeStr(timeText); } private void OnRechargeCountEvent(int obj) { scroller.m_Scorller.RefreshActiveCellViews(); } HeroConfig heroConfig; private void Display() { int heroID = manager.GetCurrentDisplayStarUpHeroId(); heroConfig = HeroConfig.Get(heroID); if (heroConfig == null) return; var artConfig = ActHeroReturnArtConfig.Get(heroID); if (artConfig == null) return; var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; var config = ActHeroAppearConfig.Get(act.CfgID); if (config == null) return; var heroArr = config.ActHeroIDList; if (heroArr.Length <= manager.starHeroIndex) return; int heroId = heroArr[manager.starHeroIndex]; heroConfig = HeroConfig.Get(heroId); if (heroConfig == null) return; int skinID = manager.GetDefaultSkinID(heroId); var heroSkinConfig = HeroSkinConfig.Get(skinID); if (heroSkinConfig == null) return; bool isLockStarHero = manager.IsLockStarHero(act); changeButton.SetActive(!isLockStarHero); lockButton.interactable = !isLockStarHero; heroHeadBaseCell.Init(heroConfig.HeroID, skinID, 0, 0, 0, () => { if (isLockStarHero) return; UIManager.Instance.OpenWindow(); }); nameText.text = heroConfig.Name; jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(heroConfig.Class)); heroNameText.text = heroConfig.Name; manager.SetGradientTextColor(heroNameText, artConfig.HeroNameColor); heroImage.SetSprite(StringUtility.Concat("HeroReturnStarUpHero_", heroID.ToString())); heroImage.SetNativeSize(); CreateScroller(config, heroConfig); } private void CreateScroller(ActHeroAppearConfig appearConfig, HeroConfig heroConfig) { if (appearConfig == null || heroConfig == null) return; int starGiftTempID = appearConfig.StarGiftTempID; var list = ActHeroAppearStarConfig.GetHeroReturnAwardIndexSortList(starGiftTempID); if (list == null) return; scroller.Refresh(); for (int i = 0; i < list.Count; i++) { var awardIndex = list[i]; var config = ActHeroAppearStarConfig.GetConfig(starGiftTempID, awardIndex); if (config == null) continue; CellInfo cellInfo = new() { infoInt1 = heroConfig.HeroID, infoInt2 = i == 0 ? 1 : 0, infoInt3 = i == list.Count - 1 ? 1 : 0 }; scroller.AddCell(ScrollerDataType.Header, config.ID, cellInfo); } scroller.Restart(); scroller.JumpIndex(manager.GetStarUpJumpIndex(starGiftTempID)); } }