using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
// 武将登场战令
|
public class HeroReturnZhanLingWin : UIBase
|
{
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] ButtonEx btnGo;
|
[SerializeField] ButtonEx btnPaid;
|
[SerializeField] ButtonEx btnPaidH;
|
|
[SerializeField] ImageEx imgPaidLock;
|
[SerializeField] ImageEx imgPaidLockH;
|
|
[SerializeField] Text txtNowNeedValue;
|
|
[SerializeField] Text welfarePerText;
|
[SerializeField] Text itemNameText;
|
[SerializeField] Image adImg;
|
[SerializeField] Image adWordImg;
|
[SerializeField] Image adHeroImg;
|
|
[SerializeField] Text txtPaidLock;
|
[SerializeField] Text txtPaidLockH;
|
[SerializeField] Text txtPaidLockBuyed;
|
[SerializeField] Text txtPaidLockBuyedH;
|
|
HeroReturnManager zhanLingModel => HeroReturnManager.Instance;
|
protected override void InitComponent()
|
{
|
btnGo.AddListener(OnGoClick);
|
btnPaid.AddListener(OnPaidClick);
|
btnPaidH.AddListener(OnPaidHClick);
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
zhanLingModel.OnZhanLingUpdateEvent += OnZhanLingUpdateEvent;
|
scroller.OnRefreshCell += OnScrollerRefreshCell;
|
ShowStaticUI();
|
Initialize();
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
zhanLingModel.OnZhanLingUpdateEvent -= OnZhanLingUpdateEvent;
|
scroller.OnRefreshCell -= OnScrollerRefreshCell;
|
}
|
|
private void Display()
|
{
|
//0 没购买进阶和玄级 1 购买了进阶没买玄级 2 购买了玄级没买进阶 3 购买了进阶和玄级
|
int buyState = zhanLingModel.GetZhanLingBuyState();
|
scroller.m_Scorller.RefreshActiveCellViews();
|
txtNowNeedValue.text = Language.Get("HeroReturnZhanLing06", zhanLingModel.GetZhanLingValue());
|
|
// imgPaidLock: 未购买进阶(type 1)且未购买玄级(type 2)时显示锁,或已购买玄级但未购买进阶时显示锁
|
imgPaidLock.SetActive(buyState == 0 || buyState == 2);
|
// imgPaidLockH: 未购买玄级且未购买进阶时显示锁,或已购买进阶但未购买玄级时显示锁
|
imgPaidLockH.SetActive(buyState == 0 || buyState == 1);
|
|
txtPaidLock.SetActive(buyState == 0 || buyState == 2);
|
txtPaidLockBuyed.SetActive(buyState == 1 || buyState == 3);
|
|
txtPaidLockH.SetActive(buyState == 0 || buyState == 1);
|
txtPaidLockBuyedH.SetActive(buyState == 2 || buyState == 3);
|
}
|
|
private void OnZhanLingUpdateEvent()
|
{
|
Display();
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void OnScrollerRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as HeroReturnZhanLingCell;
|
_cell.Display(_cell.index);
|
}
|
|
private void Initialize()
|
{
|
var cellList = ZhanlingConfig.GetTypeToIDDict(zhanLingModel.ZhanLingType).Keys.ToList();
|
scroller.Refresh();
|
for (int i = 0; i < cellList.Count; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, cellList[i]);
|
}
|
scroller.Restart();
|
|
var data = BattlePassManager.Instance.GetBattlePassData(zhanLingModel.ZhanLingType);
|
var totalValue = BattlePassManager.Instance.GetTotalValue(zhanLingModel.ZhanLingType);
|
scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(data, zhanLingModel.ZhanLingType, totalValue));
|
}
|
|
|
|
void ShowStaticUI()
|
{
|
// 获取高级付费(PaidH/玄级)的CTGID和百分比
|
var funcConfig = FuncConfigConfig.Get("Zhanling");
|
var dict = ConfigParse.ParseIntArrayDict(funcConfig.Numerical3);
|
if (dict.TryGetValue(zhanLingModel.ZhanLingType, out var arr) && arr.Length > 0)
|
{
|
var paidHConfig = CTGConfig.Get(arr[0]);
|
welfarePerText.text = paidHConfig.Percentage + "%";
|
}
|
|
adWordImg.SetSprite("BattlePassInWord" + zhanLingModel.ZhanLingType);
|
adImg.SetSprite("BattlePassInWord" + zhanLingModel.ZhanLingType);
|
|
var act = zhanLingModel.GetOperationHeroAppearInfo();
|
if (act == null) return;
|
|
var config = ActHeroAppearConfig.Get(act.CfgID);
|
if (config == null) return;
|
var needCount = zhanLingModel.GetLuckValueAward(config.ActTreasureType) - zhanLingModel.subVulue;
|
itemNameText.text = Language.Get("HeroReturnZhanLing01", needCount);
|
|
int heroID = zhanLingModel.GetFirstHeroId();
|
adImg.SetSprite($"HeroReturnZhanLingBG_{heroID}");
|
adWordImg.SetSprite($"HeroReturnZhanLingWord_{heroID}");
|
adHeroImg.SetSprite($"HeroReturnZhanLingHero_{heroID}");
|
}
|
|
void OnGoClick()
|
{
|
UIJumpManager.Instance.OpenWindow(20);
|
}
|
|
void OnPaidClick()
|
{
|
int buyState = zhanLingModel.GetZhanLingBuyState();
|
// 已购买进阶(type 1)或已购买玄级和进阶(buyState == 3)时不再跳转
|
if (buyState == 1 || buyState == 3)
|
return;
|
zhanLingModel.ShowZhanLingHBuy(zhanLingModel.ZhanLingType, 1);
|
}
|
|
void OnPaidHClick()
|
{
|
int buyState = zhanLingModel.GetZhanLingBuyState();
|
// 已购买玄级(type 2)或已购买玄级和进阶(buyState == 3)时不再跳转
|
if (buyState == 2 || buyState == 3)
|
return;
|
zhanLingModel.ShowZhanLingHBuy(zhanLingModel.ZhanLingType, 2);
|
}
|
}
|