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<HeroReturnStarUpWin>();
|
UIManager.Instance.OpenWindow<HeroReturnCallWin>();
|
});
|
goInfoButton.SetListener(() =>
|
{
|
if (heroConfig == null) return;
|
UIManager.Instance.CloseWindow<HeroReturnStarUpWin>();
|
HeroUIManager.Instance.selectForPreviewHeroID = heroConfig.HeroID;
|
UIManager.Instance.OpenWindow<HeroBestBaseWin>();
|
});
|
changeButton.SetListener(() =>
|
{
|
UIManager.Instance.OpenWindow<HeroReturnStarUpChangeWin>();
|
});
|
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<HeroReturnStarUpCell>();
|
_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<HeroReturnStarUpChangeWin>();
|
});
|
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));
|
}
|
}
|