using System; using System.Linq; using UnityEngine; using UnityEngine.UI; public class BattlePassCommonCell : CellView { [SerializeField] ItemCell baseAward; [SerializeField] Transform baseGotRect; [SerializeField] Transform baseCanGetAwardRect; [SerializeField] Transform upProcssBGRect; [SerializeField] Transform upProcessRect; [SerializeField] Transform downProcssBGRect; [SerializeField] Transform downProcessRect; [SerializeField] Text valueText; [SerializeField] ItemCell[] betterAwards; [SerializeField] Transform[] betterGotRects; [SerializeField] Transform[] betterCanGetAwardRects; [SerializeField] Transform[] betterLockRects; [SerializeField] Transform mask; int bpID; public void Display(int id, BattlePassData battlePassData) { bpID = id; var config = ZhanlingConfig.Get(id); int freeItemID = config.FreeRewardItemList[0][0]; baseAward.Init(new ItemCellModel(freeItemID, false, config.FreeRewardItemList[0][1])); var totalValue = BattlePassManager.Instance.GetTotalValue(config.ZhanlingType); var baseAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, 0); baseAward.button.AddListener(() => { GetAward(battlePassData, baseAwardState, freeItemID); }); baseGotRect.SetActive(baseAwardState == 2); baseCanGetAwardRect.SetActive(baseAwardState == 1); mask.SetActive(baseAwardState == 0); var ids = ZhanlingConfig.GetTypeToIDDict(config.ZhanlingType).Values.ToList(); ids.Sort(); upProcssBGRect.SetActive(ids[0] != id); upProcessRect.SetActive(baseAwardState != 0); downProcssBGRect.SetActive(ids[ids.Count - 1] != id); var nextConfig = ZhanlingConfig.Get(id + 1); if (nextConfig != null) { downProcessRect.SetActive(totalValue >= nextConfig.NeedValue); } else { downProcessRect.SetActive(false); } if (config.ZhanlingType == (int)BattlePassType.MainLine) { valueText.text = config.NeedValue/100 + "-" + config.NeedValue%100; } else { valueText.text = config.NeedValue.ToString(); } var betterAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, 1); for (int i = 0; i < betterAwards.Length; i++) { int itemID = config.ZLRewardItemList[i][0]; betterAwards[i].Init(new ItemCellModel(itemID, false, config.ZLRewardItemList[i][1])); betterAwards[i].button.AddListener(() => { GetAward(battlePassData, betterAwardState, itemID); }); betterGotRects[i].SetActive(betterAwardState == 2); betterCanGetAwardRects[i].SetActive(betterAwardState == 1); betterLockRects[i].SetActive(battlePassData.isActivite == 0); } } void GetAward(BattlePassData battlePassData, int awardState, int itemID) { if (awardState != 1) { ItemTipUtility.Show(itemID); return; } var config = ZhanlingConfig.Get(bpID); var totalValue = BattlePassManager.Instance.GetTotalValue(config.ZhanlingType); BattlePassManager.Instance.GetAllAward(battlePassData, config.ZhanlingType, totalValue); } }