using UnityEngine;
|
|
public class HeroDebutCallChangeWin : UIBase
|
{
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] ButtonEx closeButton;
|
[SerializeField] ButtonEx okButton;
|
[SerializeField] ButtonEx previewButton;
|
[SerializeField] UIHeroController uiHeroController;
|
public const int rowCountMax = 4;
|
HeroDebutManager manager => HeroDebutManager.Instance;
|
|
protected override void InitComponent()
|
{
|
closeButton.SetListener(CloseWindow);
|
okButton.SetListener(() =>
|
{
|
var act = manager.GetOperationHeroAppearInfo();
|
if (act == null) return;
|
|
int index = manager.GetHeroIdIndex(act.CfgID, manager.nowCallChooseHeroID);
|
if (index < 0) return;
|
|
if (manager.GetCurrentDisplayCallHeroId() == manager.nowCallChooseHeroID)
|
{
|
SysNotifyMgr.Instance.ShowTip("HeroDebut01");
|
return;
|
}
|
|
manager.SnedHeroAppearCallHeroSelect(manager.actNum, index);
|
CloseWindow();
|
});
|
previewButton.SetListener(() =>
|
{
|
HeroUIManager.Instance.selectForPreviewHeroID = manager.nowCallChooseHeroID;
|
UIManager.Instance.OpenWindow<HeroBestBaseWin>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.OnRefreshCell += OnRefreshCell;
|
manager.OnNowCallChooseHeroIDChangeEvent += OnNowCallChooseHeroIDChangeEvent;
|
manager.nowCallChooseHeroID = manager.GetCurrentDisplayCallHeroId();
|
Display();
|
CreateScroller();
|
}
|
|
protected override void OnPreClose()
|
{
|
scroller.OnRefreshCell -= OnRefreshCell;
|
manager.OnNowCallChooseHeroIDChangeEvent -= OnNowCallChooseHeroIDChangeEvent;
|
}
|
|
private void OnNowCallChooseHeroIDChangeEvent()
|
{
|
Display();
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as HeroDebutCallChangeCell;
|
_cell.Display(cell.index);
|
}
|
|
void CreateScroller()
|
{
|
var act = manager.GetOperationHeroAppearInfo();
|
if (act == null) return;
|
|
var config = ActHeroAppearConfig.Get(act.CfgID);
|
if (config == null) return;
|
|
var arr = config.ActHeroIDList;
|
if (arr.IsNullOrEmpty()) return;
|
|
|
scroller.Refresh();
|
int rowCount = (int)Mathf.Ceil((float)arr.Length / rowCountMax);
|
for (int i = 0; i < rowCount; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
scroller.Restart();
|
}
|
|
void Display()
|
{
|
var act = manager.GetOperationHeroAppearInfo();
|
if (act == null) return;
|
|
|
int skinID = manager.GetDefaultSkinID(manager.nowCallChooseHeroID);
|
var skinConfig = HeroSkinConfig.Get(skinID);
|
if (skinConfig == null) return;
|
|
uiHeroController.Create(skinID, 1);
|
}
|
}
|