using System.Linq;
|
using UnityEngine;
|
|
public class HeroReturnZhanLingCell : CellView
|
{
|
[SerializeField] ItemCell freeItemCell;
|
[SerializeField] Transform freeGotRect;
|
[SerializeField] Transform baseCanGetAwardRect;
|
|
[SerializeField] ItemCell[] paidAwards;
|
[SerializeField] Transform[] paidGotRects;
|
[SerializeField] Transform[] paidCanGetRects;
|
[SerializeField] Transform[] paidLockRects;
|
[SerializeField] ItemCell[] paidHAwards;
|
[SerializeField] Transform[] paidHGotRects;
|
[SerializeField] Transform[] paidHCanGetRects;
|
[SerializeField] Transform[] paidHLockRects;
|
[SerializeField] Transform upProcssBGRect;
|
[SerializeField] Transform upProcessRect;
|
[SerializeField] Transform downProcssBGRect;
|
[SerializeField] Transform downProcessRect;
|
[SerializeField] TextEx txtUnlockLV;
|
[SerializeField] Transform mask;
|
|
HeroReturnManager zhanLingModel => HeroReturnManager.Instance;
|
|
public void Display(int needValue)
|
{
|
var totalValue = BattlePassManager.Instance.GetTotalValue(zhanLingModel.ZhanLingType);
|
int zhanlingId = ZhanlingConfig.GetTypeToIDDict(zhanLingModel.ZhanLingType)[needValue];
|
int freeState = zhanLingModel.GetZhanLingFreeGiftState(needValue);
|
int paidState = zhanLingModel.GetZhanLingPaidGiftState(needValue);
|
int paidHState = zhanLingModel.GetZhanLingPaidGiftHState(needValue);
|
int buyState = zhanLingModel.GetZhanLingBuyState();
|
|
freeGotRect.SetActive(freeState == 2);
|
baseCanGetAwardRect.SetActive(freeState == 1);
|
mask.SetActive(freeState == 0);
|
|
for (int i = 0; i < paidAwards.Length; i++)
|
{
|
bool isBuy = buyState == 1 || buyState == 3;
|
paidGotRects[i].SetActive(paidState == 2);
|
paidCanGetRects[i].SetActive(paidState == 1 && isBuy);
|
paidLockRects[i].SetActive(!isBuy || paidState == 0);
|
}
|
for (int i = 0; i < paidHAwards.Length; i++)
|
{
|
bool isBuy = buyState == 2 || buyState == 3;
|
paidHGotRects[i].SetActive(paidHState == 2);
|
paidHCanGetRects[i].SetActive(paidHState == 1 && isBuy);
|
paidHLockRects[i].SetActive(!isBuy || paidHState == 0);
|
}
|
txtUnlockLV.text = needValue.ToString();
|
|
// 进度条显示逻辑
|
var ids = ZhanlingConfig.GetTypeToIDDict(zhanLingModel.ZhanLingType).Values.ToList();
|
ids.Sort();
|
upProcssBGRect.SetActive(ids[0] != zhanlingId);
|
upProcessRect.SetActive(freeState != 0);
|
|
downProcssBGRect.SetActive(ids[ids.Count - 1] != zhanlingId);
|
var nextConfig = ZhanlingConfig.Get(zhanlingId + 1);
|
downProcessRect.SetActive(nextConfig != null && totalValue >= nextConfig.NeedValue);
|
|
// 展示ItemCell
|
var config = ZhanlingConfig.Get(zhanlingId);
|
if (config == null)
|
return;
|
|
// 免费奖励
|
int freeItemId = config.FreeRewardItemList[0][0];
|
freeItemCell.Init(new ItemCellModel(freeItemId, false, config.FreeRewardItemList[0][1]));
|
freeItemCell.button.onClick.RemoveAllListeners();
|
freeItemCell.button.onClick.AddListener(() =>
|
{
|
if (freeState == 1)
|
zhanLingModel.HaveAllZhanLingGift();
|
else
|
ItemTipUtility.Show(freeItemId);
|
});
|
|
// 普通奖励
|
for (int i = 0; i < paidAwards.Length; i++)
|
{
|
if (i >= config.ZLRewardItemList.Length)
|
continue;
|
int itemId2 = config.ZLRewardItemList[i][0];
|
paidAwards[i].Init(new ItemCellModel(itemId2, false, config.ZLRewardItemList[i][1]));
|
paidAwards[i].button.onClick.RemoveAllListeners();
|
paidAwards[i].button.onClick.AddListener(() =>
|
{
|
if (buyState == 0 || buyState == 2)
|
zhanLingModel.ShowZhanLingHBuy(zhanLingModel.ZhanLingType, 1);
|
else if (paidState == 1)
|
zhanLingModel.HaveAllZhanLingGift();
|
else
|
ItemTipUtility.Show(itemId2);
|
});
|
}
|
|
// 高级奖励
|
for (int i = 0; i < paidHAwards.Length; i++)
|
{
|
if (i >= config.ZLRewardItemListH.Length)
|
continue;
|
int itemId3 = config.ZLRewardItemListH[i][0];
|
paidHAwards[i].Init(new ItemCellModel(itemId3, false, config.ZLRewardItemListH[i][1]));
|
paidHAwards[i].button.onClick.RemoveAllListeners();
|
paidHAwards[i].button.onClick.AddListener(() =>
|
{
|
if (buyState == 0 || buyState == 1)
|
zhanLingModel.ShowZhanLingHBuy(zhanLingModel.ZhanLingType, 2);
|
else if (paidHState == 1)
|
zhanLingModel.HaveAllZhanLingGift();
|
else
|
ItemTipUtility.Show(itemId3);
|
});
|
}
|
}
|
}
|