using System.Linq;
|
using UnityEngine;
|
|
public class HeroReturnStarUpCell : CellView
|
{
|
[SerializeField] ItemCell freeAwardItemCell;
|
[SerializeField] Transform freeAwardHaveTransform;//已领取
|
[SerializeField] Transform freeAwardCanHaveTransform;//可领取
|
|
[SerializeField] Transform upProcssBGTransform;
|
[SerializeField] Transform upProcessTransform;
|
[SerializeField] Transform downProcssBGTransform;
|
[SerializeField] Transform downProcessTransform;
|
[SerializeField] TextEx starCntText;
|
[SerializeField] TextEx limitText;
|
[SerializeField] ButtonEx buyButton;
|
[SerializeField] ImageEx buyImage;
|
[SerializeField] TextEx buyText;
|
[SerializeField] ImageEx rateImage;
|
[SerializeField] TextEx rateText;
|
[SerializeField] ScrollerController scroller;
|
HeroReturnManager manager => HeroReturnManager.Instance;
|
int id;
|
public void Display(int id, CellView cell)
|
{
|
this.id = id;
|
|
int heroID = cell.info.Value.infoInt1;
|
bool isFrist = cell.info.Value.infoInt2 == 1;
|
bool isEnd = cell.info.Value.infoInt3 == 1;
|
|
var config = ActHeroAppearStarConfig.Get(id);
|
if (config == null) return;
|
|
var heroConfig = HeroConfig.Get(heroID);
|
if (heroConfig == null) return;
|
|
if (config.FreeAwardItemList.IsNullOrEmpty()) return;
|
int ctgId = config.StarGiftCTGID;
|
int awardIndex = config.AwardIndex;
|
if (!manager.TryGetStarUpAwardArr(id, heroID, out int[][] list)) return;
|
if (!RechargeManager.Instance.TryGetOrderInfo(ctgId, out var orderConfig)) return;
|
if (!RechargeManager.Instance.TryGetRechargeCount(ctgId, out var rechargeCount)) return;
|
if (!RechargeManager.Instance.TryGetRechargeItem(ctgId, out var rechargeItemList)) return;
|
CTGConfig ctgConfig = CTGConfig.Get(ctgId);
|
if (ctgConfig == null) return;
|
|
rateImage.SetActive(true);
|
rateText.text = Language.Get("DailySpecials07", ctgConfig.Percentage);
|
|
int state = manager.GetStarUpFreeState(id);//0 - 未解锁 1 - 可领取 2 - 已领取
|
freeAwardHaveTransform.SetActive(state == 2);
|
freeAwardCanHaveTransform.SetActive(state == 1);
|
|
bool isNoSellOut = manager.IsNoSellOutCTGID(ctgId);
|
buyButton.interactable = state != 0 && isNoSellOut;
|
buyButton.SetListener(() =>
|
{
|
if (isNoSellOut && state != 0)
|
{
|
RechargeManager.Instance.CTG(ctgId);
|
}
|
});
|
//buyImage.gray = state == 0 || !isNoSellOut;
|
buyText.text = !isNoSellOut ? Language.Get("storename11") : Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.PayRMBNumOnSale));
|
limitText.text = Language.Get("TimeRush08", UIHelper.AppendColor(rechargeCount.totalCount >= ctgConfig.TotalBuyCount ? TextColType.Red : TextColType.DarkGreen, $"{rechargeCount.totalCount}/{ctgConfig.TotalBuyCount}"));
|
bool isHeroStarOk = manager.IsHeroStarCntOk(heroConfig.HeroID, config.NeedStar) && HeroManager.Instance.HasHero(heroConfig.HeroID) && manager.IsLockStarHero(manager.GetOperationHeroAppearInfo());
|
upProcssBGTransform.SetActive(!isFrist);
|
downProcssBGTransform.SetActive(!isEnd);
|
|
upProcessTransform.SetActive(isHeroStarOk);
|
downProcessTransform.SetActive(isHeroStarOk);
|
|
CreateScroller(list);
|
|
int[] arr = config.FreeAwardItemList.First();
|
int itemID = arr[0];
|
int itemCount = arr[1];
|
freeAwardItemCell.SetActive(true);
|
freeAwardItemCell.Init(new ItemCellModel(itemID, false, itemCount));
|
freeAwardItemCell.button.AddListener(() =>
|
{
|
if (state == 1)
|
{
|
manager.SendGetStarReward();
|
}
|
else
|
{
|
ItemTipUtility.Show(itemID);
|
}
|
});
|
|
starCntText.text = Language.Get("HeroDebut20", config.NeedStar);
|
}
|
|
private void CreateScroller(int[][] list)
|
{
|
if (list == null) return;
|
var config = ActHeroAppearStarConfig.Get(id);
|
if (config == null) return;
|
|
scroller.OnRefreshCell += OnRefreshCell;
|
scroller.Refresh();
|
for (int i = 0; i < list.Length; i++)
|
{
|
var item = list[i];
|
var itemID = item[0];
|
var itemCount = item[1];
|
CellInfo cellInfo = new()
|
{
|
infoInt1 = itemID,
|
infoInt2 = itemCount,
|
infoInt3 = manager.IsNoSellOutCTGID(config.StarGiftCTGID) ? 1 : 0,
|
};
|
scroller.AddCell(ScrollerDataType.Header, i, cellInfo);
|
}
|
scroller.Restart();
|
scroller.OnRefreshCell -= OnRefreshCell;
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<HeroReturnStarUpPaidItemCell>();
|
_cell?.Display(cell.index, cell);
|
}
|
}
|