using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; //通用战令 public class BattlePassCommonWin : UIBase { [SerializeField] Text titleText; [SerializeField] Text welfarePerText; //福利百分比 [SerializeField] Text itemNameText; //额外奖励 [SerializeField] Text totalActivityText; [SerializeField] Text tabNameText; [SerializeField] Transform lockRect; [SerializeField] ScrollerController scroller; [SerializeField] Transform rechargeRect; [SerializeField] ItemCell itemCell; [SerializeField] Button buyBtn; [SerializeField] Text buyText; BattlePassData battlePassData; int battlePasstype; protected override void InitComponent() { buyBtn.AddListener(() => { RechargeManager.Instance.CTG(BattlePassManager.Instance.GetCTGIDByType(battlePasstype)); }); } protected override void OnPreOpen() { battlePasstype = functionOrder; battlePassData = BattlePassManager.Instance.GetBattlePassData(battlePasstype); if (battlePassData == null) return; scroller.OnRefreshCell += OnRefreshCell; BattlePassManager.Instance.BattlePassDataUpdateEvent += BattlePassDataUpdateEvent; PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh; BlessLVManager.Instance.OnBlessLVUpdateEvent += OnBlessLVUpdateEvent; CreateScroller(); ShowStaticUI(); Display(); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; BattlePassManager.Instance.BattlePassDataUpdateEvent -= BattlePassDataUpdateEvent; PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh; BlessLVManager.Instance.OnBlessLVUpdateEvent -= OnBlessLVUpdateEvent; } void OnPlayerDataRefresh(PlayerDataType type) { if (type == PlayerDataType.LV || type == PlayerDataType.ExAttr1) { Display(); } } void OnBlessLVUpdateEvent() { Display(); } void BattlePassDataUpdateEvent(int type) { if (type == battlePasstype) { Display(); } } void ShowStaticUI() { var ctgID = BattlePassManager.Instance.GetCTGIDByType(battlePasstype); var config = CTGConfig.Get(ctgID); welfarePerText.text = config.Percentage + "%"; if (!config.GainItemList.IsNullOrEmpty() && config.GainItemList.Length >= 2) { //约定第二个物品 itemNameText.text = Language.Get("BattlePass8", config.GainItemList[1][1], ItemConfig.Get(config.GainItemList[1][0]).ItemName); } tabNameText.text = Language.Get("BattlePassTab" + battlePasstype); titleText.text = Language.Get("BattlePassTitle" + battlePasstype); } void Display() { ShowTotalValueStr(); lockRect.SetActive(battlePassData.isActivite == 0); scroller.m_Scorller.RefreshActiveCellViews(); if (battlePassData.isActivite == 0) { rechargeRect.SetActive(true); var ctgID = BattlePassManager.Instance.GetCTGIDByType(battlePasstype); RechargeManager.Instance.TryGetOrderInfo(ctgID, out var orderInfoConfig); buyText.text = Language.Get("PayMoneyNum", orderInfoConfig.PayRMBNumOnSale); var config = CTGConfig.Get(ctgID); //约定第一个武将物品 int itemID = config.GainItemList[0][0]; itemCell.Init(new ItemCellModel(itemID, false, config.GainItemList[0][1])); itemCell.button.AddListener(() => { ItemTipUtility.Show(itemID); }); } else { rechargeRect.SetActive(false); } } void ShowTotalValueStr() { var totalValue = BattlePassManager.Instance.GetTotalValue(battlePasstype); switch ((BattlePassType)battlePasstype) { case BattlePassType.LV: case BattlePassType.BlessLV: case BattlePassType.GuBao: case BattlePassType.Arena: { totalActivityText.text = Language.Get("BattlePassValue" + battlePasstype, totalValue); break; } case BattlePassType.MainLine: { totalActivityText.text = Language.Get("BattlePassValue3", totalValue / 100, totalValue % 100); break; } } } void CreateScroller() { scroller.Refresh(); var values = ZhanlingConfig.GetTypeToIDDict(battlePasstype).Values.ToList(); values.Sort(); for (int i = 0; i < values.Count; i++) { scroller.AddCell(ScrollerDataType.Header, values[i]); } scroller.Restart(); var totalValue = BattlePassManager.Instance.GetTotalValue(battlePasstype); scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(battlePassData, battlePasstype, totalValue)); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as BattlePassCommonCell; _cell.Display(cell.index, battlePassData); } }