using System.Collections.Generic;
|
using UnityEngine;
|
|
public class HeroFatesPutWin : UIBase
|
{
|
[SerializeField] Transform transChooseHero;
|
[SerializeField] HeroFatesPutItem chooseHero;
|
[SerializeField] GiftBaseCell[] giftBaseCells;
|
|
[SerializeField] Transform transNoChooseHero;
|
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] Transform transNoCanChooseHero;
|
[SerializeField] ButtonEx btnPut;
|
[SerializeField] TextEx txtChooseCnt;
|
|
HeroFatesManager manager { get { return HeroFatesManager.Instance; } }
|
protected override void InitComponent()
|
{
|
btnPut.SetListener(() =>
|
{
|
manager.PutList();
|
CloseWindow();
|
});
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += OnRefreshCell;
|
manager.OnChooseChangeEvent += OnChooseChangeEvent;
|
|
CreateScoller();
|
DisplayChooseHero();
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
manager.OnChooseChangeEvent -= OnChooseChangeEvent;
|
}
|
|
private void OnChooseChangeEvent()
|
{
|
RefeshScoller();
|
DisplayChooseHero();
|
}
|
|
List<HeroInfo> list = new List<HeroInfo>();
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<HeroFatesPutCell>();
|
_cell?.Display(cell.index, list);
|
}
|
|
void CreateScoller()
|
{
|
scroller.Refresh();
|
if (manager.TryGetHeroFatesConfig(manager.chooseHeroFatesId, out HeroFatesConfig config) &&
|
manager.TryGetNowLVAndNextLVConfig(config.FatesID, out int nowLv, out HeroFatesQualityLVConfig nowLVConfig, out HeroFatesQualityLVConfig nextLVConfig))
|
{
|
|
int fatesQuality = nextLVConfig.NeedQuality;
|
list = manager.GetConsumableHeroInfoList(fatesQuality);
|
transNoCanChooseHero.SetActive(list.IsNullOrEmpty());
|
if (!list.IsNullOrEmpty())
|
{
|
int rowCount = Mathf.CeilToInt((float)list.Count / manager.rowCountMax);
|
for (int i = 0; i < rowCount; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
}
|
scroller.Restart();
|
}
|
|
void RefeshScoller()
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void DisplayChooseHero()
|
{
|
HeroInfo heroInfo = manager.chooseHeroInfo;
|
transNoChooseHero.SetActive(heroInfo == null);
|
transChooseHero.SetActive(heroInfo != null);
|
if (heroInfo != null)
|
{
|
chooseHero.Display(heroInfo);
|
HeroUIManager.Instance.RefreshGiftCell(giftBaseCells, heroInfo);
|
}
|
|
if (!manager.TryGetNowLVAndNextLVConfig(manager.chooseHeroFatesId, out int nowLv, out HeroFatesQualityLVConfig nowLVConfig, out HeroFatesQualityLVConfig nextLVConfig))
|
{
|
return;
|
}
|
int needCnt = nextLVConfig.NeedHeroCnt;
|
int chooseCnt = manager.chooseCostHeroInfos.Count;
|
txtChooseCnt.text = Language.Get("HeroFates04", UIHelper.AppendColor(chooseCnt >= needCnt ? TextColType.DarkGreen : TextColType.Red, Language.Get("BoneField09", chooseCnt, needCnt)));
|
}
|
}
|