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); } }