using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //时装礼包 public class HeroSkinGiftWin : UIBase { [SerializeField] GroupButtonEx[] giftBtns; [SerializeField] ItemCell[] itemCells; [SerializeField] Text priceText; [SerializeField] Button buyBtn; [SerializeField] Transform saleOutObj; [SerializeField] Image bg1; [SerializeField] Image bg2; [SerializeField] Button closeBtn; int index; protected override void InitComponent() { buyBtn.AddListener(() => { RechargeManager.Instance.CTG(GeneralDefine.heroSkinGiftList[index]); }); for (int i = 0; i < giftBtns.Length; i++) { int _index = i; giftBtns[i].AddListener(() => { index = _index; Display(); }); } closeBtn.AddListener(() => { CloseWindow(); }); } protected override void OnPreOpen() { index = 0; RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent; for (int i = 0; i < giftBtns.Length; i++) { if (i < GeneralDefine.heroSkinGiftList.Length) { giftBtns[i].SetActive(true); var cfg = CTGConfig.Get(GeneralDefine.heroSkinGiftList[i]); RechargeManager.Instance.TryGetRechargeCount(GeneralDefine.heroSkinGiftList[i], out RechargeCount _rechargeCount); if (_rechargeCount.todayCount < cfg.DailyBuyCount) { index = i; break; } } else { giftBtns[i].SetActive(false); } } giftBtns[index].SelectBtn(); Display(); } protected override void OnPreClose() { RechargeManager.Instance.rechargeCountEvent -= OnRechargeCountEvent; } void Display() { RechargeManager.Instance.TryGetRechargeItem(GeneralDefine.heroSkinGiftList[index], out var itemList); for (int i = 0; i < itemCells.Length; i++) { if (i < itemList.Count) { itemCells[i].SetActive(true); int itemID = itemList[i].id; itemCells[i].Init(new ItemCellModel(itemID, true, itemList[i].countEx)); itemCells[i].button.SetListener(() => ItemTipUtility.Show(itemID)); } else { itemCells[i].SetActive(false); } } if (!RechargeManager.Instance.IsSellOut(GeneralDefine.heroSkinGiftList[index])) { buyBtn.SetActive(true); saleOutObj.SetActive(false); } else { buyBtn.SetActive(false); saleOutObj.SetActive(true); } RechargeManager.Instance.TryGetOrderInfo(GeneralDefine.heroSkinGiftList[index], out var orderInfoConfig); priceText.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderInfoConfig.PayRMBNumOnSale)); bg1.SetSprite($"HeroSkinGiftBg{index}_1"); bg2.SetSprite($"HeroSkinGiftBg{index}_2"); bg1.SetNativeSize(); bg2.SetNativeSize(); } private void OnRechargeCountEvent(int obj) { Display(); } }